From afd537c09fd4e5469fcb5483b0ef944c0d1a91c1 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Tue, 13 Sep 2022 21:35:37 -0500 Subject: [PATCH 001/397] refactor! --- .flake8 | 9 +- .gitignore | 13 +- .pre-commit-config.yaml | 2 +- .pylintrc | 6 +- .vscode/settings.json | 43 + Dockerfile | 2 +- Makefile | 82 + cloudbuild.yml => NOTICE | 0 docker-compose.yml | 2 +- mypy.ini | 21 +- poetry.lock | 1831 ++++++++++++----- pyproject.toml | 103 +- sonar-project.properties | 8 + src/pyspa/__init__.py | 22 +- src/pyspa/__main__.py | 14 +- src/pyspa/asgi.py | 66 + src/pyspa/cli/{main.py => app.py} | 15 +- src/pyspa/cli/commands/__init__.py | 5 +- src/pyspa/cli/commands/manage.py | 145 +- src/pyspa/cli/commands/run.py | 56 +- src/pyspa/cli/console.py | 4 +- src/pyspa/config/__init__.py | 5 +- src/pyspa/config/alembic.ini | 76 + src/pyspa/config/application.py | 240 ++- src/pyspa/config/gunicorn.py | 15 - src/pyspa/config/logging.py | 150 +- src/pyspa/config/paths.py | 19 + src/pyspa/core/__init__.py | 14 + src/pyspa/core/asgi.py | 21 - src/pyspa/core/cache.py | 154 ++ src/pyspa/core/client/__init__.py | 4 + src/pyspa/core/client/client.py | 85 + src/pyspa/core/client/endpoint.py | 43 + src/pyspa/core/compression.py | 4 + src/pyspa/core/cors.py | 4 + src/pyspa/core/csrf.py | 11 + src/pyspa/core/exceptions.py | 5 +- src/pyspa/core/guards.py | 70 + src/pyspa/core/handlers.py | 27 + src/pyspa/core/openapi.py | 22 +- src/pyspa/core/response.py | 23 - src/pyspa/core/security.py | 63 + src/pyspa/core/static_files.py | 12 + src/pyspa/core/wsgi.py | 127 -- src/pyspa/db/__init__.py | 42 + src/pyspa/db/db_types.py | 278 +++ src/pyspa/db/engine.py | 76 + src/pyspa/db/migrations/README | 1 + src/pyspa/db/migrations/env.py | 94 + src/pyspa/db/migrations/script.py.mako | 33 + .../migrations/versions/.gitkeep} | 0 src/pyspa/middleware/__init__.py | 4 + src/pyspa/middleware/db.py | 43 + src/pyspa/middleware/jwt.py | 67 + src/pyspa/models/__init__.py | 19 + src/pyspa/models/base.py | 200 ++ src/pyspa/models/collection.py | 58 + src/pyspa/models/team.py | 137 ++ src/pyspa/models/user.py | 34 + src/pyspa/repositories/__init__.py | 4 + src/pyspa/repositories/base.py | 412 ++++ src/pyspa/repositories/team.py | 0 src/pyspa/repositories/user.py | 21 + src/pyspa/routes/__init__.py | 3 - src/pyspa/routes/health_check.py | 9 - src/pyspa/schemas/__init__.py | 42 + src/pyspa/schemas/base.py | 46 + src/pyspa/schemas/health.py | 24 + src/pyspa/schemas/message.py | 5 + src/pyspa/schemas/team.py | 88 + src/pyspa/schemas/user.py | 119 ++ src/pyspa/services/__init__.py | 3 + src/pyspa/services/base.py | 239 +++ src/pyspa/services/health.py | 0 src/pyspa/services/user.py | 122 ++ src/pyspa/utils/__init__.py | 12 + src/pyspa/utils/asyncer.py | 452 ++++ src/pyspa/utils/db/__init__.py | 3 + src/pyspa/utils/db/db_ready.py | 19 + src/pyspa/utils/import_tools.py | 23 + src/pyspa/utils/log/__init__.py | 3 + src/pyspa/utils/log/extensions.py | 276 +++ src/pyspa/utils/postgres_ready.py | 25 - src/pyspa/utils/redis_ready.py | 27 - src/pyspa/utils/restartable_worker.py | 101 - src/pyspa/utils/serializers.py | 55 + src/pyspa/utils/text/__init__.py | 3 + src/pyspa/utils/text/slugify.py | 20 + src/pyspa/{__version__.py => version.py} | 0 src/pyspa/web/__init__.py | 17 + src/pyspa/web/assets/index.html | 0 src/pyspa/web/routes/__init__.py | 26 + src/pyspa/web/routes/access.py | 0 src/pyspa/web/routes/collection.py | 30 + src/pyspa/web/routes/health.py | 27 + src/pyspa/web/routes/organization.py | 0 src/pyspa/web/routes/user.py | 28 + 97 files changed, 5832 insertions(+), 1181 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 Makefile rename cloudbuild.yml => NOTICE (100%) create mode 100644 sonar-project.properties create mode 100644 src/pyspa/asgi.py rename src/pyspa/cli/{main.py => app.py} (55%) create mode 100644 src/pyspa/config/alembic.ini delete mode 100644 src/pyspa/config/gunicorn.py create mode 100644 src/pyspa/config/paths.py delete mode 100644 src/pyspa/core/asgi.py create mode 100644 src/pyspa/core/cache.py create mode 100644 src/pyspa/core/client/__init__.py create mode 100644 src/pyspa/core/client/client.py create mode 100644 src/pyspa/core/client/endpoint.py create mode 100644 src/pyspa/core/compression.py create mode 100644 src/pyspa/core/cors.py create mode 100644 src/pyspa/core/csrf.py create mode 100644 src/pyspa/core/guards.py create mode 100644 src/pyspa/core/handlers.py delete mode 100644 src/pyspa/core/response.py create mode 100644 src/pyspa/core/security.py create mode 100644 src/pyspa/core/static_files.py delete mode 100644 src/pyspa/core/wsgi.py create mode 100644 src/pyspa/db/__init__.py create mode 100644 src/pyspa/db/db_types.py create mode 100644 src/pyspa/db/engine.py create mode 100644 src/pyspa/db/migrations/README create mode 100644 src/pyspa/db/migrations/env.py create mode 100644 src/pyspa/db/migrations/script.py.mako rename src/pyspa/{core/prestart.py => db/migrations/versions/.gitkeep} (100%) create mode 100644 src/pyspa/middleware/__init__.py create mode 100644 src/pyspa/middleware/db.py create mode 100644 src/pyspa/middleware/jwt.py create mode 100644 src/pyspa/models/__init__.py create mode 100644 src/pyspa/models/base.py create mode 100644 src/pyspa/models/collection.py create mode 100644 src/pyspa/models/team.py create mode 100644 src/pyspa/models/user.py create mode 100644 src/pyspa/repositories/__init__.py create mode 100644 src/pyspa/repositories/base.py create mode 100644 src/pyspa/repositories/team.py create mode 100644 src/pyspa/repositories/user.py delete mode 100644 src/pyspa/routes/__init__.py delete mode 100644 src/pyspa/routes/health_check.py create mode 100644 src/pyspa/schemas/__init__.py create mode 100644 src/pyspa/schemas/base.py create mode 100644 src/pyspa/schemas/health.py create mode 100644 src/pyspa/schemas/message.py create mode 100644 src/pyspa/schemas/team.py create mode 100644 src/pyspa/schemas/user.py create mode 100644 src/pyspa/services/__init__.py create mode 100644 src/pyspa/services/base.py create mode 100644 src/pyspa/services/health.py create mode 100644 src/pyspa/services/user.py create mode 100644 src/pyspa/utils/__init__.py create mode 100644 src/pyspa/utils/asyncer.py create mode 100644 src/pyspa/utils/db/__init__.py create mode 100644 src/pyspa/utils/db/db_ready.py create mode 100644 src/pyspa/utils/import_tools.py create mode 100644 src/pyspa/utils/log/__init__.py create mode 100644 src/pyspa/utils/log/extensions.py delete mode 100644 src/pyspa/utils/postgres_ready.py delete mode 100644 src/pyspa/utils/redis_ready.py delete mode 100644 src/pyspa/utils/restartable_worker.py create mode 100644 src/pyspa/utils/serializers.py create mode 100644 src/pyspa/utils/text/__init__.py create mode 100644 src/pyspa/utils/text/slugify.py rename src/pyspa/{__version__.py => version.py} (100%) create mode 100644 src/pyspa/web/__init__.py create mode 100644 src/pyspa/web/assets/index.html create mode 100644 src/pyspa/web/routes/__init__.py create mode 100644 src/pyspa/web/routes/access.py create mode 100644 src/pyspa/web/routes/collection.py create mode 100644 src/pyspa/web/routes/health.py create mode 100644 src/pyspa/web/routes/organization.py create mode 100644 src/pyspa/web/routes/user.py diff --git a/.flake8 b/.flake8 index 390277b5..5e1bf944 100644 --- a/.flake8 +++ b/.flake8 @@ -1,7 +1,7 @@ [flake8] -jobs = 4 -max-line-length = 80 -exclude = .git,__pycache__ +jobs = 6 +max-line-length = 120 +exclude = .git,__pycache__,.venv,build,dist,tools,*/migrations/* max-complexity = 10 # D203 - blank line before docstring # E203 - broken whitespace check for ":", disagrees with black @@ -9,9 +9,12 @@ ignore = D203,E203, E501, C408, B008, B009, W503, SIM119, C417, B023 per-file-ignores = # imported but unused __init__.py: F401 + src/pyspa/db/migrations/versions/*.py: W291 type-checking-pydantic-enabled = true type-checking-fastapi-enabled = true classmethod-decorators = classmethod validator root_validator + declared_attr +type-checking-exempt-modules = from sqlalchemy.orm \ No newline at end of file diff --git a/.gitignore b/.gitignore index 90ac4fa4..b7901738 100644 --- a/.gitignore +++ b/.gitignore @@ -91,9 +91,6 @@ ipython_config.py # install all needed dependencies. #Pipfile.lock -# poetry -# poetry.lock - # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ @@ -105,13 +102,15 @@ celerybeat.pid *.sage.py # Environments -.env +.env* +!.env.example .venv env/ venv/ ENV/ env.bak/ venv.bak/ +.venv # Spyder project settings .spyderproject @@ -131,5 +130,7 @@ dmypy.json # Pyre type checker .pyre/ -# VSCode -.vscode +# vscode +# .vscode +.venv +.venv diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b8808742..64f40081 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ repos: rev: v2.34.0 hooks: - id: pyupgrade - args: ["--py310-plus"] + args: ["--py39-plus"] - repo: https://github.com/pycqa/isort rev: 5.10.1 hooks: diff --git a/.pylintrc b/.pylintrc index fc02813a..2b62d4fa 100644 --- a/.pylintrc +++ b/.pylintrc @@ -8,21 +8,21 @@ [MASTER] # Files or directories to be skipped. They should be base names, not paths. -ignore=third_party +ignore=third_party,pyspa.db.migrations # Files or directories matching the regex patterns are skipped. The regex # matches against base names, not paths. ignore-patterns= # Pickle collected data for later comparisons. -persistent=no +persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= # Use multiple processes to speed up Pylint. -jobs=4 +jobs=6 # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..e6c41253 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,43 @@ +{ + "python.formatting.provider": "none", + "[python]": { + "editor.formatOnPaste": false, + "editor.formatOnSave": true, + "editor.defaultFormatter": "ms-python.black-formatter", + "editor.codeActionsOnSave": { + "source.organizeImports": true, + "source.fixAll": true, + "source.fixSpelling": true + } + }, + "files.exclude": { + "**/._*": true, + "**/*.pyc": { + "when": "$(basename).py" + }, + "**/__pycache__": true, + ".venv": true, + ".idea": true, + ".run": true, + ".pytest_cache": true, + ".mypy_cache": true, + ".hypothesis": true, + ".cache": true, + ".dist": true, + "**/.pytest_cache": true + }, + + "isort.args": ["--profile", "black", "--overwrite-in-place"], + "python.linting.pylintEnabled": true, + "python.linting.pylintArgs": ["--extension-pkg-whitelist='pydantic'"], + "python.linting.flake8Args": ["--max-line-length=120"], + "python.sortImports.args": ["--profile", "black"], + "python.testing.pytestArgs": ["tests"], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true, + "python.linting.flake8Enabled": true, + "python.linting.mypyEnabled": true, + "python.linting.enabled": true, + "mypy.targets": ["src", "tests"], + "mypy.runUsingActiveInterpreter": true +} diff --git a/Dockerfile b/Dockerfile index cc4d7ae7..9b476a30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,7 +71,7 @@ COPY alembic.ini ./ COPY scripts ./scripts/ COPY alembic ./alembic/ # These are the two folders that change the most. -COPY opdba /app/ +COPY pyspa /app/ COPY --from=git /version /app/.version # switch to a non-root user for security diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..b8010254 --- /dev/null +++ b/Makefile @@ -0,0 +1,82 @@ +.DEFAULT_GOAL:=help +.ONESHELL: +ENV_PREFIX=$(shell python3 -c "if __import__('pathlib').Path('.venv/bin/pip').exists(): print('.venv/bin/')") +USING_POETRY=$(shell grep "tool.poetry" pyproject.toml && echo "yes") +USING_DOCKER=$(shell grep "OPDBA_USE_DOCKER=true" .env && echo "yes") +USING_PNPM=$(shell python3 -c "if __import__('pathlib').Path('pnpm-lock.yaml').exists(): print('yes')") +USING_YARN=$(shell python3 -c "if __import__('pathlib').Path('yarn.lock').exists(): print('yes')") +USING_NPM=$(shell python3 -c "if __import__('pathlib').Path('package-lock.json').exists(): print('yes')") +VENV_EXISTS=$(shell python3 -c "if __import__('pathlib').Path('.venv/bin/activate').exists(): print('yes')") +PYTHON_PACKAGES=$(shell poetry export -f requirements.txt --without-hashes |cut -d'=' -f1 |cut -d ' ' -f1) +GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 +.EXPORT_ALL_VARIABLES: + +ifndef VERBOSE +.SILENT: +endif + + +REPO_INFO ?= $(shell git config --get remote.origin.url) +COMMIT_SHA ?= git-$(shell git rev-parse --short HEAD) + +help: ## Display this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + + +.PHONY: upgrade-dependencies +upgrade-dependencies: ## Upgrade all dependencies to the latest stable versions + @if [ "$(USING_POETRY)" ]; then poetry update; fi + @echo "Python Dependencies Updated" + @if [ "$(USING_YARN)" ]; then yarn upgrade; fi + @if [ "$(USING_PNPM)" ]; then pnpm upgrade; fi + @echo "Node Dependencies Updated" + +############### +# lint & test # +############### +format-source: ## Format source code + @echo 'Formatting and cleaning source...' + ./scripts/format-source-code.sh + +lint: ## check style with flake8 + env PYTHONPATH=src poetry run flake8 src + +test: ## run tests quickly with the default Python + env PYTHONPATH=src poetry run pytest --cov-config .coveragerc --cov=src -l --tb=short tests/backend/unit + coverage xml + coverage html + +test-all: ## run tests on every Python version with tox + env PYTHONPATH=src poetry run tox + +coverage: ## check code coverage quickly with the default Python + env PYTHONPATH=src/ poetry run coverage run --source pyspa -m pytest + env PYTHONPATH=src/ poetry run coverage report -m + +.PHONY: install +install: ## Install the project in dev mode. + @if ! poetry --version > /dev/null; then echo 'poetry is required, install from https://python-poetry.org/'; exit 1; fi + @if [ "$(VENV_EXISTS)" ]; then echo "Removing existing environment"; fi + @if [ "$(VENV_EXISTS)" ]; then rm -Rf .venv; fi + @if [ "$(USING_POETRY)" ]; then poetry config virtualenvs.in-project true && poetry config virtualenvs.create true && poetry config virtualenvs.options.always-copy true && poetry install && exit; fi + @if [ "$(USING_NPM)" ]; then npm install; fi + @echo "Install complete. ** If you want to recreate your entire virtualenv run 'make virtualenv'" + + +.PHONY: migrations +migrations: ## Generate database migrations + @echo "ATTENTION: This operation will create a new database migration for any defined models changes." + @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" + +.PHONY: migrate +migrate: ## Generate database migrations + @echo "ATTENTION: Will apply all database migrations." + @env PYTHONPATH=src poetry run pyspa config upgrade-database + +.PHONY: squash-migrations +squash-migrations: ## Generate database migrations + @echo "ATTENTION: This operation will wipe alll migrations and recreate from an emtpy state." + @env PYTHONPATH=src poetry run pyspa config purge-database --no-prompt + rm -Rf src/pyspa/db/migrations/versions/*.py + @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" + diff --git a/cloudbuild.yml b/NOTICE similarity index 100% rename from cloudbuild.yml rename to NOTICE diff --git a/docker-compose.yml b/docker-compose.yml index ed5aebc7..2273715d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,7 @@ services: env_file: - .env volumes: - - ./src/opdba:/workspace/opdba + - ./src/pyspa:/workspace/pyspa # - ./scripts:/code/scripts - ./tests:/workspace/tests diff --git a/mypy.ini b/mypy.ini index bbdb794e..961d6195 100644 --- a/mypy.ini +++ b/mypy.ini @@ -5,11 +5,20 @@ warn_redundant_casts = True warn_unused_configs = True warn_unreachable = True warn_return_any = True +disallow_incomplete_defs = true +disallow_untyped_defs = true strict = True disallow_untyped_decorators = True disallow_any_generics = False implicit_reexport = False show_error_codes = True +exclude = [".venv","*/migrations/*"] + +[mypy-pyspa.db.migrations.*] +ignore_errors = True + +[mypy-pyspa.models.base.*] +warn_unused_ignores = False [mypy-tests.*] disallow_untyped_decorators = False @@ -23,12 +32,14 @@ warn_untyped_fields = True [mypy-uvicorn.*] ignore_missing_imports = True -[mypy-gunicorn.*] +[mypy-picologging.*] ignore_missing_imports = True -[mypy-picologging.*] +[mypy-saq.*] ignore_missing_imports = True -[mypy-typer.*] -disallow_untyped_defs = True -strict = True \ No newline at end of file +[mypy-mkdocs_gen_files.*] +ignore_missing_imports = True + +[mypy-sqlalchemy.*] +ignore_missing_imports = True diff --git a/poetry.lock b/poetry.lock index d2f6c656..5db9be4b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -26,10 +26,41 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] +[[package]] +name = "argon2-cffi" +version = "21.3.0" +description = "The secure Argon2 password hashing algorithm." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["cogapp", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "pre-commit", "pytest", "sphinx", "sphinx-notfound-page", "tomli"] +docs = ["furo", "sphinx", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + [[package]] name = "astor" version = "0.8.1" @@ -40,15 +71,18 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" [[package]] name = "astroid" -version = "2.11.7" +version = "2.12.9" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" -wrapt = ">=1.11,<2" +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] name = "async-timeout" @@ -67,17 +101,9 @@ optional = false python-versions = ">=3.6.0" [package.extras] -dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=6.0)", "Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "pycodestyle (>=2.7.0,<2.8.0)", "flake8 (>=3.9.2,<3.10.0)", "uvloop (>=0.15.3)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)"] -test = ["pycodestyle (>=2.7.0,<2.8.0)", "flake8 (>=3.9.2,<3.10.0)", "uvloop (>=0.15.3)"] - -[[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +dev = ["Cython (>=0.29.24,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "flake8 (>=3.9.2,<3.10.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "uvloop (>=0.15.3)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["flake8 (>=3.9.2,<3.10.0)", "pycodestyle (>=2.7.0,<2.8.0)", "uvloop (>=0.15.3)"] [[package]] name = "attrs" @@ -88,10 +114,22 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] + +[[package]] +name = "autoflake" +version = "1.5.3" +description = "Removes unused imports and unused variables" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pyflakes = ">=1.1.0" +toml = ">=0.10.2" [[package]] name = "bandit" @@ -108,13 +146,13 @@ PyYAML = ">=5.3.1" stevedore = ">=1.20.0" [package.extras] -test = ["coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml", "beautifulsoup4 (>=4.8.0)", "pylint (==1.9.4)"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] toml = ["toml"] -yaml = ["pyyaml"] +yaml = ["PyYAML"] [[package]] name = "black" -version = "22.6.0" +version = "22.8.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -145,7 +183,7 @@ python-versions = ">=3.7" black = ">=19.3b0" [[package]] -name = "brotli" +name = "Brotli" version = "1.0.9" description = "Python bindings for the Brotli compression library" category = "main" @@ -160,14 +198,60 @@ category = "dev" optional = false python-versions = ">=3.5" +[[package]] +name = "cairocffi" +version = "1.3.0" +description = "cffi-based cairo bindings for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cffi = ">=1.1.0" + +[package.extras] +doc = ["sphinx", "sphinx-rtd-theme"] +test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] +xcb = ["xcffib (>=0.3.2)"] + +[[package]] +name = "CairoSVG" +version = "2.5.2" +description = "A Simple SVG Converter based on Cairo" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +cairocffi = "*" +cssselect2 = "*" +defusedxml = "*" +pillow = "*" +tinycss2 = "*" + +[package.extras] +doc = ["sphinx", "sphinx-rtd-theme"] +test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] + [[package]] name = "certifi" -version = "2022.6.15" +version = "2022.6.15.2" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgv" version = "3.3.1" @@ -176,9 +260,20 @@ category = "dev" optional = false python-versions = ">=3.6.1" +[[package]] +name = "charset-normalizer" +version = "2.1.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" +optional = false +python-versions = ">=3.6.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + [[package]] name = "classify-imports" -version = "4.1.0" +version = "4.2.0" description = "Utilities for refactoring imports in python-like syntax." category = "dev" optional = false @@ -216,7 +311,7 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "coverage" -version = "6.4.2" +version = "6.4.4" description = "Code coverage measurement for Python" category = "dev" optional = false @@ -229,7 +324,58 @@ tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.1 toml = ["tomli"] [[package]] -name = "deprecated" +name = "cryptography" +version = "38.0.1" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools-rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] + +[[package]] +name = "cssselect2" +version = "0.6.0" +description = "CSS selectors for Python ElementTree" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tinycss2 = "*" +webencodings = "*" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["coverage[toml]", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] + +[[package]] +name = "Cython" +version = "0.29.32" +description = "The Cython compiler for writing C extensions for the Python language." +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "Deprecated" version = "1.2.13" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." category = "main" @@ -240,7 +386,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" wrapt = ">=1.10,<2" [package.extras] -dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] +dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version (<1)", "configparser (<5)", "importlib-metadata (<3)", "importlib-resources (<4)", "sphinx (<2)", "sphinxcontrib-websupport (<2)", "tox", "zipp (<2)"] [[package]] name = "dill" @@ -255,7 +401,7 @@ graph = ["objgraph (>=1.7.2)"] [[package]] name = "distlib" -version = "0.3.5" +version = "0.3.6" description = "Distribution utilities" category = "dev" optional = false @@ -270,13 +416,28 @@ optional = false python-versions = ">=3.6,<4.0" [package.extras] -dnssec = ["cryptography (>=2.6,<37.0)"] curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] +dnssec = ["cryptography (>=2.6,<37.0)"] doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.10.0)"] idna = ["idna (>=2.1,<4.0)"] trio = ["trio (>=0.14,<0.20)"] wmi = ["wmi (>=1.5.1,<2.0.0)"] +[[package]] +name = "ecdsa" +version = "0.18.0" +description = "ECDSA cryptographic signature library (pure python)" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[package.dependencies] +six = ">=1.9.0" + +[package.extras] +gmpy = ["gmpy"] +gmpy2 = ["gmpy2"] + [[package]] name = "email-validator" version = "1.2.1" @@ -291,7 +452,7 @@ idna = ">=2.0.0" [[package]] name = "exceptiongroup" -version = "1.0.0rc8" +version = "1.0.0rc9" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false @@ -301,8 +462,8 @@ python-versions = ">=3.7" test = ["pytest (>=6)"] [[package]] -name = "faker" -version = "13.15.1" +name = "Faker" +version = "14.2.0" description = "Faker is a Python package that generates fake data for you." category = "main" optional = false @@ -313,19 +474,19 @@ python-dateutil = ">=2.4" [[package]] name = "filelock" -version = "3.7.1" +version = "3.8.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] -testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] +docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] +testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" -version = "5.0.0" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false @@ -338,7 +499,7 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "flake8-bugbear" -version = "22.7.1" +version = "22.9.11" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." category = "dev" optional = false @@ -399,7 +560,7 @@ flake8 = ">=3.7" [[package]] name = "flake8-type-checking" -version = "2.1.0" +version = "2.1.3" description = "A flake8 plugin for managing type-checking imports & forward references" category = "dev" optional = false @@ -411,7 +572,7 @@ flake8 = "*" [[package]] name = "freezegun" -version = "1.2.1" +version = "1.2.2" description = "Let your Python tests travel through time" category = "dev" optional = false @@ -432,7 +593,7 @@ python-versions = "*" python-dateutil = ">=2.8.1" [package.extras] -dev = ["twine", "markdown", "flake8", "wheel"] +dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "gitdb" @@ -446,7 +607,7 @@ python-versions = ">=3.6" smmap = ">=3.0.1,<6" [[package]] -name = "gitpython" +name = "GitPython" version = "3.1.27" description = "GitPython is a python library used to interact with Git repositories" category = "dev" @@ -458,18 +619,18 @@ gitdb = ">=4.0.1,<5" [[package]] name = "greenlet" -version = "1.1.2" +version = "1.1.3" description = "Lightweight in-process concurrent programming" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" [package.extras] -docs = ["sphinx"] +docs = ["Sphinx"] [[package]] name = "griffe" -version = "0.22.0" +version = "0.22.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." category = "dev" optional = false @@ -478,23 +639,9 @@ python-versions = ">=3.7" [package.extras] async = ["aiofiles (>=0.7,<1.0)"] -[[package]] -name = "gunicorn" -version = "20.1.0" -description = "WSGI HTTP Server for UNIX" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.extras] -eventlet = ["eventlet (>=0.24.1)"] -gevent = ["gevent (>=1.4.0)"] -setproctitle = ["setproctitle"] -tornado = ["tornado (>=0.2)"] - [[package]] name = "h11" -version = "0.12.0" +version = "0.13.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" category = "main" optional = false @@ -510,25 +657,22 @@ python-versions = ">=3.6" [[package]] name = "httpcore" -version = "0.15.0" +version = "0.13.2" description = "A minimal low-level HTTP client." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] -anyio = ">=3.0.0,<4.0.0" -certifi = "*" -h11 = ">=0.11,<0.13" +h11 = "<1.0.0" sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httptools" -version = "0.4.0" +version = "0.5.0" description = "A collection of framework independent HTTP protocol utils." category = "main" optional = false @@ -539,27 +683,25 @@ test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.23.0" +version = "0.18.1" description = "The next generation HTTP client." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] certifi = "*" -httpcore = ">=0.15.0,<0.16.0" +httpcore = ">=0.13.0,<0.14.0" rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} sniffio = "*" [package.extras] -brotli = ["brotlicffi", "brotli"] -cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10,<13)", "pygments (>=2.0.0,<3.0.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +brotli = ["brotlicffi (>=1.0.0,<2.0.0)"] +http2 = ["h2 (>=3.0.0,<4.0.0)"] [[package]] name = "hypothesis" -version = "6.53.0" +version = "6.54.5" description = "A library for property-based testing" category = "dev" optional = false @@ -574,11 +716,11 @@ rich = {version = ">=9.0.0", optional = true, markers = "extra == \"cli\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] -all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=1.0)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "importlib-metadata (>=3.6)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] -cli = ["click (>=7.0)", "black (>=19.10b0)", "rich (>=9.0.0)"] +all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "django (>=3.2)", "dpcontracts (>=0.4)", "importlib-metadata (>=3.6)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=1.0)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2022.2)"] +cli = ["black (>=19.10b0)", "click (>=7.0)", "rich (>=9.0.0)"] codemods = ["libcst (>=0.3.16)"] dateutil = ["python-dateutil (>=1.4)"] -django = ["django (>=2.2)"] +django = ["django (>=3.2)"] dpcontracts = ["dpcontracts (>=0.4)"] ghostwriter = ["black (>=19.10b0)"] lark = ["lark-parser (>=0.6.5)"] @@ -587,11 +729,11 @@ pandas = ["pandas (>=1.0)"] pytest = ["pytest (>=4.6)"] pytz = ["pytz (>=2014.1)"] redis = ["redis (>=3.0.0)"] -zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.2)"] [[package]] name = "identify" -version = "2.5.2" +version = "2.5.5" description = "File identification library for Python" category = "dev" optional = false @@ -602,7 +744,7 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -620,9 +762,9 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] [[package]] name = "iniconfig" @@ -641,13 +783,13 @@ optional = false python-versions = ">=3.6.1,<4.0" [package.extras] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] -requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] plugins = ["setuptools"] +requirements_deprecated_finder = ["pip-api", "pipreqs"] [[package]] -name = "jinja2" +name = "Jinja2" version = "3.1.2" description = "A very fast and expressive template engine." category = "dev" @@ -669,8 +811,8 @@ optional = false python-versions = ">=3.6" [[package]] -name = "mako" -version = "1.2.1" +name = "Mako" +version = "1.2.2" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." category = "main" optional = false @@ -680,12 +822,12 @@ python-versions = ">=3.7" MarkupSafe = ">=0.9.2" [package.extras] -babel = ["babel"] +babel = ["Babel"] lingua = ["lingua"] testing = ["pytest"] [[package]] -name = "markdown" +name = "Markdown" version = "3.3.7" description = "Python implementation of Markdown." category = "dev" @@ -696,7 +838,7 @@ python-versions = ">=3.6" testing = ["coverage", "pyyaml"] [[package]] -name = "markupsafe" +name = "MarkupSafe" version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" @@ -756,19 +898,22 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.3.9" +version = "8.5.0" description = "Documentation that simply works" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] +cairosvg = ">=2.5" jinja2 = ">=3.0.2" markdown = ">=3.2" mkdocs = ">=1.3.0" mkdocs-material-extensions = ">=1.0.3" +pillow = ">=8.0" pygments = ">=2.12" pymdown-extensions = ">=9.4" +requests = ">=2.26" [[package]] name = "mkdocs-material-extensions" @@ -845,20 +990,12 @@ category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" -[[package]] -name = "openapi-schema-pydantic" -version = "1.2.4" -description = "OpenAPI (v3) specification schema as pydantic class" -category = "main" -optional = false -python-versions = ">=3.6.1" - [package.dependencies] -pydantic = ">=1.8.2" +setuptools = "*" [[package]] name = "orjson" -version = "3.7.11" +version = "3.8.0" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" category = "main" optional = false @@ -875,17 +1012,34 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "passlib" +version = "1.7.4" +description = "comprehensive password hashing framework supporting over 30 schemes" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +argon2-cffi = {version = ">=18.2.0", optional = true, markers = "extra == \"argon2\""} + +[package.extras] +argon2 = ["argon2-cffi (>=18.2.0)"] +bcrypt = ["bcrypt (>=3.1.0)"] +build_docs = ["cloud-sptheme (>=1.10.1)", "sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)"] +totp = ["cryptography"] + [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.9.0" +version = "5.10.0" description = "Python Build Reasonableness" category = "dev" optional = false @@ -893,14 +1047,26 @@ python-versions = ">=2.6" [[package]] name = "picologging" -version = "0.6.0" +version = "0.8.1" description = "A fast and lightweight logging library for Python" category = "main" optional = false python-versions = ">=3.7" [package.extras] -dev = ["pytest-cov", "pytest", "rich"] +dev = ["black", "pytest", "pytest-cov", "rich"] + +[[package]] +name = "Pillow" +version = "9.2.0" +description = "Python Imaging Library (Fork)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" @@ -911,8 +1077,8 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] [[package]] name = "pluggy" @@ -950,26 +1116,42 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pyasn1" +version = "0.4.8" +description = "ASN.1 types and codecs" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pycodestyle" -version = "2.9.0" +version = "2.9.1" description = "Python style guide checker" category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pydantic" -version = "1.9.1" +version = "1.10.2" description = "Data validation and settings management using python type hints" category = "main" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.7" [package.dependencies] email-validator = {version = ">=1.0.3", optional = true, markers = "extra == \"email\""} python-dotenv = {version = ">=0.10.4", optional = true, markers = "extra == \"dotenv\""} -typing-extensions = ">=3.7.4.3" +typing-extensions = ">=4.1.0" [package.extras] dotenv = ["python-dotenv (>=0.10.4)"] @@ -977,7 +1159,7 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pydantic-factories" -version = "1.4.1" +version = "1.6.1" description = "Mock data generation for pydantic based models" category = "main" optional = false @@ -985,9 +1167,21 @@ python-versions = ">=3.7,<4.0" [package.dependencies] faker = "*" -pydantic = "*" +pydantic = ">=1.9.0" typing-extensions = "*" -xeger = ">=0.3.5,<0.4.0" +xeger = "*" + +[[package]] +name = "pydantic-openapi-schema" +version = "1.2.0" +description = "OpenAPI Schema using pydantic. Forked for Starlite-API from 'openapi-schema-pydantic'." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +email-validator = "*" +pydantic = "*" [[package]] name = "pyflakes" @@ -998,23 +1192,26 @@ optional = false python-versions = ">=3.6" [[package]] -name = "pygments" -version = "2.12.0" +name = "Pygments" +version = "2.13.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.6" +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pylint" -version = "2.14.5" +version = "2.15.2" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.6,<=2.12.0-dev0" +astroid = ">=2.12.9,<=2.14.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1047,18 +1244,17 @@ optional = false python-versions = ">=3.6.8" [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.1.2" +version = "7.1.3" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" @@ -1082,7 +1278,7 @@ python-versions = ">=3.7" pytest = ">=6.1.0" [package.extras] -testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] +testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] [[package]] name = "pytest-cov" @@ -1097,7 +1293,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] [[package]] name = "pytest-dotenv" @@ -1123,7 +1319,7 @@ python-versions = ">=3.7" pytest = ">=5.0" [package.extras] -dev = ["pre-commit", "tox", "pytest-asyncio"] +dev = ["pre-commit", "pytest-asyncio", "tox"] [[package]] name = "python-dateutil" @@ -1138,25 +1334,32 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "0.20.0" +version = "0.21.0" description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [package.extras] cli = ["click (>=5.0)"] [[package]] -name = "python-multipart" -version = "0.0.5" -description = "A streaming multipart parser for Python" +name = "python-jose" +version = "3.3.0" +description = "JOSE implementation in Python" category = "main" optional = false python-versions = "*" [package.dependencies] -six = ">=1.4.0" +ecdsa = "!=0.15" +pyasn1 = "*" +rsa = "*" + +[package.extras] +cryptography = ["cryptography (>=3.4.0)"] +pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] +pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] name = "pyupgrade" @@ -1170,7 +1373,7 @@ python-versions = ">=3.7" tokenize-rt = ">=3.2.0" [[package]] -name = "pyyaml" +name = "PyYAML" version = "6.0" description = "YAML parser and emitter for Python" category = "main" @@ -1178,7 +1381,7 @@ optional = false python-versions = ">=3.6" [[package]] -name = "pyyaml-env-tag" +name = "pyyaml_env_tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " category = "dev" @@ -1205,6 +1408,24 @@ packaging = ">=20.4" hiredis = ["hiredis (>=1.0.0)"] ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "dev" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "rfc3986" version = "1.5.0" @@ -1234,6 +1455,30 @@ pygments = ">=2.6.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] +[[package]] +name = "rsa" +version = "4.9" +description = "Pure-Python RSA implementation" +category = "main" +optional = false +python-versions = ">=3.6,<4" + +[package.dependencies] +pyasn1 = ">=0.1.3" + +[[package]] +name = "setuptools" +version = "65.3.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -1244,7 +1489,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "slotscheck" -version = "0.14.1" +version = "0.15.0" description = "Ensure your __slots__ are working properly." category = "dev" optional = false @@ -1264,11 +1509,11 @@ python-versions = ">=3.6" [[package]] name = "sniffio" -version = "1.2.0" +version = "1.3.0" description = "Sniff out which async library your code is running under" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [[package]] name = "sortedcontainers" @@ -1289,14 +1534,13 @@ develop = false [package.dependencies] greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} -mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""} typing-extensions = ">=4.1.0" [package.extras] -aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] -aiosqlite = ["greenlet (!=0.4.17)", "aiosqlite", "typing-extensions (!=3.10.0.1)"] +aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,!=0.2.4)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"] mssql = ["pyodbc"] mssql_pymssql = ["pymssql"] @@ -1304,22 +1548,22 @@ mssql_pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)"] mysql = ["mysqlclient (>=1.4.0)"] mysql_connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)"] +oracle = ["cx_oracle (>=7)"] oracle_oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] -postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] +postgresql_asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql_pg8000 = ["pg8000 (>=1.29.1)"] postgresql_psycopg = ["psycopg (>=3.0.7)"] postgresql_psycopg2binary = ["psycopg2-binary"] postgresql_psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [package.source] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "3ff18812d8d80b2016ceeea98c808a76cae85e48" +resolved_reference = "de173b600b0d3747bcf1941e3027598c66da33ac" [[package]] name = "starlette" @@ -1337,26 +1581,68 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "starlite" -version = "1.7.2" +version = "1.18.0" description = "Light-weight and flexible ASGI API Framework" category = "main" optional = false python-versions = ">=3.7,<4.0" +develop = false [package.dependencies] -brotli = {version = "*", optional = true, markers = "extra == \"testing\" or extra == \"brotli\""} -openapi-schema-pydantic = "*" +brotli = {version = "*", optional = true} orjson = "*" +picologging = {version = "*", optional = true} pydantic = "*" pydantic-factories = "*" -python-multipart = "*" +pydantic-openapi-schema = "*" pyyaml = "*" starlette = "*" +starlite-multipart = "*" typing-extensions = "*" [package.extras] -testing = ["requests", "brotli"] brotli = ["brotli"] +cryptography = ["cryptography"] +full = ["brotli", "cryptography", "picologging", "requests"] +picologging = ["picologging"] +testing = ["requests"] + +[package.source] +type = "git" +url = "https://github.com/starlite-api/starlite.git" +reference = "main" +resolved_reference = "07202e9b9ca1e819d0ca4a9b90fec6e007e7adde" + +[[package]] +name = "starlite-jwt" +version = "1.2.0" +description = "A JWT auth toolkit for Starlite" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +develop = false + +[package.dependencies] +cryptography = "*" +python-jose = "*" +starlite = ">=1.16.0" + +[package.source] +type = "git" +url = "https://github.com/starlite-api/starlite-jwt.git" +reference = "main" +resolved_reference = "9336b76493a84b0f7eeaffb84fc3088f2c58de4b" + +[[package]] +name = "starlite-multipart" +version = "1.1.0" +description = "Toolkit for working with multipart/formdata messages." +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +anyio = "*" [[package]] name = "stevedore" @@ -1369,6 +1655,21 @@ python-versions = ">=3.8" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "tinycss2" +version = "1.1.1" +description = "A tiny CSS parser" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["coverage[toml]", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] + [[package]] name = "tokenize-rt" version = "4.2.1" @@ -1395,7 +1696,7 @@ python-versions = ">=3.7" [[package]] name = "tomlkit" -version = "0.11.1" +version = "0.11.4" description = "Style preserving TOML library" category = "dev" optional = false @@ -1403,7 +1704,7 @@ python-versions = ">=3.6,<4.0" [[package]] name = "tox" -version = "3.25.1" +version = "3.26.0" description = "tox is a generic virtualenv management and test command line tool" category = "dev" optional = false @@ -1416,12 +1717,12 @@ packaging = ">=14" pluggy = ">=0.12.0" py = ">=1.4.17" six = ">=1.14.0" -toml = ">=0.9.4" +tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" [package.extras] docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] [[package]] name = "typer" @@ -1435,10 +1736,10 @@ python-versions = ">=3.6" click = ">=7.1.1,<9.0.0" [package.extras] -test = ["rich (>=10.11.0,<13.0.0)", "isort (>=5.0.6,<6.0.0)", "black (>=22.3.0,<23.0.0)", "mypy (==0.910)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "coverage (>=5.2,<6.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest (>=4.4.0,<5.4.0)", "shellingham (>=1.3.0,<2.0.0)"] -doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mkdocs (>=1.1.2,<2.0.0)"] -dev = ["pre-commit (>=2.17.0,<3.0.0)", "flake8 (>=3.8.3,<4.0.0)", "autoflake (>=1.3.1,<2.0.0)"] -all = ["rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)", "colorama (>=0.4.3,<0.5.0)"] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] [[package]] name = "types-freezegun" @@ -1449,7 +1750,23 @@ optional = false python-versions = "*" [[package]] -name = "types-pyyaml" +name = "types-passlib" +version = "1.7.7" +description = "Typing stubs for passlib" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-python-jose" +version = "3.3.4" +description = "Typing stubs for python-jose" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-PyYAML" version = "6.0.11" description = "Typing stubs for PyYAML" category = "dev" @@ -1458,7 +1775,7 @@ python-versions = "*" [[package]] name = "types-redis" -version = "4.3.12" +version = "4.3.20" description = "Typing stubs for redis" category = "dev" optional = false @@ -1466,7 +1783,7 @@ python-versions = "*" [[package]] name = "types-requests" -version = "2.28.6" +version = "2.28.10" description = "Typing stubs for requests" category = "dev" optional = false @@ -1477,7 +1794,7 @@ types-urllib3 = "<1.27" [[package]] name = "types-urllib3" -version = "1.26.19" +version = "1.26.24" description = "Typing stubs for urllib3" category = "dev" optional = false @@ -1491,9 +1808,22 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "urllib3" +version = "1.26.12" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + [[package]] name = "uvicorn" -version = "0.18.2" +version = "0.18.3" description = "The lightning-fast ASGI server." category = "main" optional = false @@ -1505,13 +1835,13 @@ colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win h11 = ">=0.8" httptools = {version = ">=0.4.0", optional = true, markers = "extra == \"standard\""} python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.0", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchfiles (>=0.13)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] +standard = ["colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.0)"] [[package]] name = "uvloop" @@ -1522,26 +1852,26 @@ optional = false python-versions = ">=3.7" [package.extras] -dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=3.6.0)", "Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)"] -test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] +dev = ["Cython (>=0.29.24,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=19.0.0,<19.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=19.0.0,<19.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] [[package]] name = "virtualenv" -version = "20.16.2" +version = "20.16.5" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.6" [package.dependencies] -distlib = ">=0.3.1,<1" -filelock = ">=3.2,<4" -platformdirs = ">=2,<3" +distlib = ">=0.3.5,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" [package.extras] -docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] -testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "packaging (>=20.0)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)"] +docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] [[package]] name = "watchdog" @@ -1556,7 +1886,7 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "watchfiles" -version = "0.16.1" +version = "0.17.0" description = "Simple, modern and high performance file watching and code reload in python." category = "main" optional = false @@ -1565,6 +1895,14 @@ python-versions = ">=3.7" [package.dependencies] anyio = ">=3.0.0,<4" +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "websockets" version = "10.3" @@ -1598,66 +1936,132 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "6b953a86fd16b606f62e8b03399a68ad02b0130a362238e8f69b2348b32e3b21" +content-hash = "2ff5c908304923e41d720a66a6568c424258c42d7068867935237d010a84609b" [metadata.files] -alembic = [] +alembic = [ + {file = "alembic-1.8.1-py3-none-any.whl", hash = "sha256:0a024d7f2de88d738d7395ff866997314c837be6104e90c5724350313dee4da4"}, + {file = "alembic-1.8.1.tar.gz", hash = "sha256:cd0b5e45b14b706426b833f06369b9a6d5ee03f826ec3238723ce8caaf6e5ffa"}, +] anyio = [ {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, ] +argon2-cffi = [ + {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, + {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, +] +argon2-cffi-bindings = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] astor = [ {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, ] -astroid = [] +astroid = [ + {file = "astroid-2.12.9-py3-none-any.whl", hash = "sha256:27a22f40e45af6d362498647a0940e8ae9c35f71cb572a1b6f8f810122a11918"}, + {file = "astroid-2.12.9.tar.gz", hash = "sha256:0dafbfcf4ebdecd3c8f6d742c9d9c88508229ca823d5c98ab872d964f3321e56"}, +] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] -asyncpg = [] -atomicwrites = [] +asyncpg = [ + {file = "asyncpg-0.26.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ed3880b3aec8bda90548218fe0914d251d641f798382eda39a17abfc4910af0"}, + {file = "asyncpg-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5bd99ee7a00e87df97b804f178f31086e88c8106aca9703b1d7be5078999e68"}, + {file = "asyncpg-0.26.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:868a71704262834065ca7113d80b1f679609e2df77d837747e3d92150dd5a39b"}, + {file = "asyncpg-0.26.0-cp310-cp310-win32.whl", hash = "sha256:838e4acd72da370ad07243898e886e93d3c0c9413f4444d600ba60a5cc206014"}, + {file = "asyncpg-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:a254d09a3a989cc1839ba2c34448b879cdd017b528a0cda142c92fbb6c13d957"}, + {file = "asyncpg-0.26.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3ecbe8ed3af4c739addbfbd78f7752866cce2c4e9cc3f953556e4960349ae360"}, + {file = "asyncpg-0.26.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ce7d8c0ab4639bbf872439eba86ef62dd030b245ad0e17c8c675d93d7a6b2d"}, + {file = "asyncpg-0.26.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7129bd809990fd119e8b2b9982e80be7712bb6041cd082be3e415e60e5e2e98f"}, + {file = "asyncpg-0.26.0-cp36-cp36m-win32.whl", hash = "sha256:03f44926fa7ff7ccd59e98f05c7e227e9de15332a7da5bbcef3654bf468ee597"}, + {file = "asyncpg-0.26.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b1f7b173af649b85126429e11a628d01a5b75973d2a55d64dba19ad8f0e9f904"}, + {file = "asyncpg-0.26.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efe056fd22fc6ed5c1ab353b6510808409566daac4e6f105e2043797f17b8dad"}, + {file = "asyncpg-0.26.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d96cf93e01df9fb03cef5f62346587805e6c0ca6f654c23b8d35315bdc69af59"}, + {file = "asyncpg-0.26.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:235205b60d4d014921f7b1cdca0e19669a9a8978f7606b3eb8237ca95f8e716e"}, + {file = "asyncpg-0.26.0-cp37-cp37m-win32.whl", hash = "sha256:0de408626cfc811ef04f372debfcdd5e4ab5aeb358f2ff14d1bdc246ed6272b5"}, + {file = "asyncpg-0.26.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f92d501bf213b16fabad4fbb0061398d2bceae30ddc228e7314c28dcc6641b79"}, + {file = "asyncpg-0.26.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9acb22a7b6bcca0d80982dce3d67f267d43e960544fb5dd934fd3abe20c48014"}, + {file = "asyncpg-0.26.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e550d8185f2c4725c1e8d3c555fe668b41bd092143012ddcc5343889e1c2a13d"}, + {file = "asyncpg-0.26.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:050e339694f8c5d9aebcf326ca26f6622ef23963a6a3a4f97aeefc743954afd5"}, + {file = "asyncpg-0.26.0-cp38-cp38-win32.whl", hash = "sha256:b0c3f39ebfac06848ba3f1e280cb1fada7cc1229538e3dad3146e8d1f9deb92a"}, + {file = "asyncpg-0.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:49fc7220334cc31d14866a0b77a575d6a5945c0fa3bb67f17304e8b838e2a02b"}, + {file = "asyncpg-0.26.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d156e53b329e187e2dbfca8c28c999210045c45ef22a200b50de9b9e520c2694"}, + {file = "asyncpg-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b4051012ca75defa9a1dc6b78185ca58cdc3a247187eb76a6bcf55dfaa2fad4"}, + {file = "asyncpg-0.26.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d60f15a0ac18c54a6ca6507c28599c06e2e87a0901e7b548f15243d71905b18"}, + {file = "asyncpg-0.26.0-cp39-cp39-win32.whl", hash = "sha256:ede1a3a2c377fe12a3930f4b4dd5340e8b32929541d5db027a21816852723438"}, + {file = "asyncpg-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:8e1e79f0253cbd51fc43c4d0ce8804e46ee71f6c173fdc75606662ad18756b52"}, + {file = "asyncpg-0.26.0.tar.gz", hash = "sha256:77e684a24fee17ba3e487ca982d0259ed17bae1af68006f4cf284b23ba20ea2c"}, +] attrs = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] +autoflake = [ + {file = "autoflake-1.5.3-py2.py3-none-any.whl", hash = "sha256:90eb8d3f625bd72068eb670338ea7efcddbc5c6e822d3601e3dc9404c06ea8da"}, + {file = "autoflake-1.5.3.tar.gz", hash = "sha256:44f7d7eb2c1c49505b513c0e93a5dfd3f7b4218283f50c5ca0af4df6b975d470"}, +] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, ] black = [ - {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, - {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, - {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, - {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, - {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, - {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, - {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, - {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, - {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, - {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, - {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, - {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, - {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, - {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, - {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, - {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, - {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, - {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, - {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, -] -blacken-docs = [] -brotli = [ + {file = "black-22.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce957f1d6b78a8a231b18e0dd2d94a33d2ba738cd88a7fe64f53f659eea49fdd"}, + {file = "black-22.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5107ea36b2b61917956d018bd25129baf9ad1125e39324a9b18248d362156a27"}, + {file = "black-22.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8166b7bfe5dcb56d325385bd1d1e0f635f24aae14b3ae437102dedc0c186747"}, + {file = "black-22.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd82842bb272297503cbec1a2600b6bfb338dae017186f8f215c8958f8acf869"}, + {file = "black-22.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d839150f61d09e7217f52917259831fe2b689f5c8e5e32611736351b89bb2a90"}, + {file = "black-22.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a05da0430bd5ced89176db098567973be52ce175a55677436a271102d7eaa3fe"}, + {file = "black-22.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a098a69a02596e1f2a58a2a1c8d5a05d5a74461af552b371e82f9fa4ada8342"}, + {file = "black-22.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5594efbdc35426e35a7defa1ea1a1cb97c7dbd34c0e49af7fb593a36bd45edab"}, + {file = "black-22.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983526af1bea1e4cf6768e649990f28ee4f4137266921c2c3cee8116ae42ec3"}, + {file = "black-22.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b2c25f8dea5e8444bdc6788a2f543e1fb01494e144480bc17f806178378005e"}, + {file = "black-22.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:78dd85caaab7c3153054756b9fe8c611efa63d9e7aecfa33e533060cb14b6d16"}, + {file = "black-22.8.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cea1b2542d4e2c02c332e83150e41e3ca80dc0fb8de20df3c5e98e242156222c"}, + {file = "black-22.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b879eb439094751185d1cfdca43023bc6786bd3c60372462b6f051efa6281a5"}, + {file = "black-22.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a12e4e1353819af41df998b02c6742643cfef58282915f781d0e4dd7a200411"}, + {file = "black-22.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a73f66b6d5ba7288cd5d6dad9b4c9b43f4e8a4b789a94bf5abfb878c663eb3"}, + {file = "black-22.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:e981e20ec152dfb3e77418fb616077937378b322d7b26aa1ff87717fb18b4875"}, + {file = "black-22.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8ce13ffed7e66dda0da3e0b2eb1bdfc83f5812f66e09aca2b0978593ed636b6c"}, + {file = "black-22.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:32a4b17f644fc288c6ee2bafdf5e3b045f4eff84693ac069d87b1a347d861497"}, + {file = "black-22.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ad827325a3a634bae88ae7747db1a395d5ee02cf05d9aa7a9bd77dfb10e940c"}, + {file = "black-22.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53198e28a1fb865e9fe97f88220da2e44df6da82b18833b588b1883b16bb5d41"}, + {file = "black-22.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:bc4d4123830a2d190e9cc42a2e43570f82ace35c3aeb26a512a2102bce5af7ec"}, + {file = "black-22.8.0-py3-none-any.whl", hash = "sha256:d2c21d439b2baf7aa80d6dd4e3659259be64c6f49dfd0f32091063db0e006db4"}, + {file = "black-22.8.0.tar.gz", hash = "sha256:792f7eb540ba9a17e8656538701d3eb1afcb134e3b45b71f20b25c77a8db7e6e"}, +] +blacken-docs = [ + {file = "blacken_docs-1.12.1-py2.py3-none-any.whl", hash = "sha256:385eb3db60faddceb218e54e2677821e1dbd441d0473f95cc4b7206a52d5bb62"}, + {file = "blacken_docs-1.12.1.tar.gz", hash = "sha256:5fd22ba1f3ab10d7013427019b4e7b83f6f4aca00c898645e0481ce7966b0aa4"}, +] +Brotli = [ {file = "Brotli-1.0.9-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:268fe94547ba25b58ebc724680609c8ee3e5a843202e9a381f6f9c5e8bdb5c70"}, {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:c2415d9d082152460f2bd4e382a1e85aed233abc92db5a3880da2257dc7daf7b"}, {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5913a1177fc36e30fcf6dc868ce23b0453952c78c04c266d3149b3d39e1410d6"}, @@ -1725,17 +2129,94 @@ bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] +cairocffi = [ + {file = "cairocffi-1.3.0.tar.gz", hash = "sha256:108a3a7cb09e203bdd8501d9baad91d786d204561bd71e9364e8b34897c47b91"}, +] +CairoSVG = [ + {file = "CairoSVG-2.5.2-py3-none-any.whl", hash = "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b"}, + {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"}, +] certifi = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, + {file = "certifi-2022.6.15.2-py3-none-any.whl", hash = "sha256:0aa1a42fbd57645fabeb6290a7687c21755b0344ecaeaa05f4e9f6207ae2e9a8"}, + {file = "certifi-2022.6.15.2.tar.gz", hash = "sha256:aa08c101214127b9b0472ca6338315113c9487d45376fd3e669201b477c71003"}, +] +cffi = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, ] cfgv = [ {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, ] +charset-normalizer = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] classify-imports = [ - {file = "classify_imports-4.1.0-py2.py3-none-any.whl", hash = "sha256:45436d3c4c886ca9092a2c90551b392ba120360e7a782574169ddeb866bbc08a"}, - {file = "classify_imports-4.1.0.tar.gz", hash = "sha256:69ddc4320690c26aa8baa66bf7e0fa0eecfda49d99cf71a59dee0b57dac82616"}, + {file = "classify_imports-4.2.0-py2.py3-none-any.whl", hash = "sha256:dbbc264b70a470ed8c6c95976a11dfb8b7f63df44ed1af87328bbed2663f5161"}, + {file = "classify_imports-4.2.0.tar.gz", hash = "sha256:7abfb7ea92149b29d046bd34573d247ba6e68cc28100c801eba4af17964fc40e"}, ] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, @@ -1749,8 +2230,137 @@ commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, ] -coverage = [] -deprecated = [ +coverage = [ + {file = "coverage-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc"}, + {file = "coverage-6.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973"}, + {file = "coverage-6.4.4-cp310-cp310-win32.whl", hash = "sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0"}, + {file = "coverage-6.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875"}, + {file = "coverage-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0"}, + {file = "coverage-6.4.4-cp311-cp311-win32.whl", hash = "sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796"}, + {file = "coverage-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a"}, + {file = "coverage-6.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928"}, + {file = "coverage-6.4.4-cp37-cp37m-win32.whl", hash = "sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c"}, + {file = "coverage-6.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d"}, + {file = "coverage-6.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c"}, + {file = "coverage-6.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b"}, + {file = "coverage-6.4.4-cp38-cp38-win32.whl", hash = "sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781"}, + {file = "coverage-6.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2"}, + {file = "coverage-6.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86"}, + {file = "coverage-6.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a"}, + {file = "coverage-6.4.4-cp39-cp39-win32.whl", hash = "sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145"}, + {file = "coverage-6.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827"}, + {file = "coverage-6.4.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1"}, + {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, +] +cryptography = [ + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, + {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, + {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, + {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, +] +cssselect2 = [ + {file = "cssselect2-0.6.0-py3-none-any.whl", hash = "sha256:3a83b2a68370c69c9cd3fcb88bbfaebe9d22edeef2c22d1ff3e1ed9c7fa45ed8"}, + {file = "cssselect2-0.6.0.tar.gz", hash = "sha256:5b5d6dea81a5eb0c9ca39f116c8578dd413778060c94c1f51196371618909325"}, +] +Cython = [ + {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:39afb4679b8c6bf7ccb15b24025568f4f9b4d7f9bf3cbd981021f542acecd75b"}, + {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dbee03b8d42dca924e6aa057b836a064c769ddfd2a4c2919e65da2c8a362d528"}, + {file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ba622326f2862f9c1f99ca8d47ade49871241920a352c917e16861e25b0e5c3"}, + {file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e6ffa08aa1c111a1ebcbd1cf4afaaec120bc0bbdec3f2545f8bb7d3e8e77a1cd"}, + {file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:97335b2cd4acebf30d14e2855d882de83ad838491a09be2011745579ac975833"}, + {file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:06be83490c906b6429b4389e13487a26254ccaad2eef6f3d4ee21d8d3a4aaa2b"}, + {file = "Cython-0.29.32-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:eefd2b9a5f38ded8d859fe96cc28d7d06e098dc3f677e7adbafda4dcdd4a461c"}, + {file = "Cython-0.29.32-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5514f3b4122cb22317122a48e175a7194e18e1803ca555c4c959d7dfe68eaf98"}, + {file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:656dc5ff1d269de4d11ee8542f2ffd15ab466c447c1f10e5b8aba6f561967276"}, + {file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:cdf10af3e2e3279dc09fdc5f95deaa624850a53913f30350ceee824dc14fc1a6"}, + {file = "Cython-0.29.32-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:3875c2b2ea752816a4d7ae59d45bb546e7c4c79093c83e3ba7f4d9051dd02928"}, + {file = "Cython-0.29.32-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:79e3bab19cf1b021b613567c22eb18b76c0c547b9bc3903881a07bfd9e7e64cf"}, + {file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0595aee62809ba353cebc5c7978e0e443760c3e882e2c7672c73ffe46383673"}, + {file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0ea8267fc373a2c5064ad77d8ff7bf0ea8b88f7407098ff51829381f8ec1d5d9"}, + {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c8e8025f496b5acb6ba95da2fb3e9dacffc97d9a92711aacfdd42f9c5927e094"}, + {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:afbce249133a830f121b917f8c9404a44f2950e0e4f5d1e68f043da4c2e9f457"}, + {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:513e9707407608ac0d306c8b09d55a28be23ea4152cbd356ceaec0f32ef08d65"}, + {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e83228e0994497900af954adcac27f64c9a57cd70a9ec768ab0cb2c01fd15cf1"}, + {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ea1dcc07bfb37367b639415333cfbfe4a93c3be340edf1db10964bc27d42ed64"}, + {file = "Cython-0.29.32-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8669cadeb26d9a58a5e6b8ce34d2c8986cc3b5c0bfa77eda6ceb471596cb2ec3"}, + {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ed087eeb88a8cf96c60fb76c5c3b5fb87188adee5e179f89ec9ad9a43c0c54b3"}, + {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:3f85eb2343d20d91a4ea9cf14e5748092b376a64b7e07fc224e85b2753e9070b"}, + {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:63b79d9e1f7c4d1f498ab1322156a0d7dc1b6004bf981a8abda3f66800e140cd"}, + {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1958e0227a4a6a2c06fd6e35b7469de50adf174102454db397cec6e1403cce3"}, + {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:856d2fec682b3f31583719cb6925c6cdbb9aa30f03122bcc45c65c8b6f515754"}, + {file = "Cython-0.29.32-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:479690d2892ca56d34812fe6ab8f58e4b2e0129140f3d94518f15993c40553da"}, + {file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:67fdd2f652f8d4840042e2d2d91e15636ba2bcdcd92e7e5ffbc68e6ef633a754"}, + {file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:4a4b03ab483271f69221c3210f7cde0dcc456749ecf8243b95bc7a701e5677e0"}, + {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:40eff7aa26e91cf108fd740ffd4daf49f39b2fdffadabc7292b4b7dc5df879f0"}, + {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0bbc27abdf6aebfa1bce34cd92bd403070356f28b0ecb3198ff8a182791d58b9"}, + {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cddc47ec746a08603037731f5d10aebf770ced08666100bd2cdcaf06a85d4d1b"}, + {file = "Cython-0.29.32-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca3065a1279456e81c615211d025ea11bfe4e19f0c5650b859868ca04b3fcbd"}, + {file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d968ffc403d92addf20b68924d95428d523436adfd25cf505d427ed7ba3bee8b"}, + {file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f3fd44cc362eee8ae569025f070d56208908916794b6ab21e139cea56470a2b3"}, + {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:b6da3063c5c476f5311fd76854abae6c315f1513ef7d7904deed2e774623bbb9"}, + {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:061e25151c38f2361bc790d3bcf7f9d9828a0b6a4d5afa56fbed3bd33fb2373a"}, + {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f9944013588a3543fca795fffb0a070a31a243aa4f2d212f118aa95e69485831"}, + {file = "Cython-0.29.32-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07d173d3289415bb496e72cb0ddd609961be08fe2968c39094d5712ffb78672b"}, + {file = "Cython-0.29.32-py2.py3-none-any.whl", hash = "sha256:eeb475eb6f0ccf6c039035eb4f0f928eb53ead88777e0a760eccb140ad90930b"}, + {file = "Cython-0.29.32.tar.gz", hash = "sha256:8733cf4758b79304f2a4e39ebfac5e92341bce47bcceb26c1254398b2f8c1af7"}, +] +defusedxml = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] +Deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] @@ -1758,49 +2368,65 @@ dill = [ {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, ] -distlib = [] +distlib = [ + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, +] dnspython = [ {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"}, {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"}, ] +ecdsa = [ + {file = "ecdsa-0.18.0-py2.py3-none-any.whl", hash = "sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd"}, + {file = "ecdsa-0.18.0.tar.gz", hash = "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"}, +] email-validator = [ {file = "email_validator-1.2.1-py2.py3-none-any.whl", hash = "sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c"}, {file = "email_validator-1.2.1.tar.gz", hash = "sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8"}, ] exceptiongroup = [ - {file = "exceptiongroup-1.0.0rc8-py3-none-any.whl", hash = "sha256:ab0a968e1ef769e55d9a596f4a89f7be9ffedbc9fdefdb77cc68cf5c33ce1035"}, - {file = "exceptiongroup-1.0.0rc8.tar.gz", hash = "sha256:6990c24f06b8d33c8065cfe43e5e8a4bfa384e0358be036af9cc60b6321bd11a"}, + {file = "exceptiongroup-1.0.0rc9-py3-none-any.whl", hash = "sha256:2e3c3fc1538a094aab74fad52d6c33fc94de3dfee3ee01f187c0e0c72aec5337"}, + {file = "exceptiongroup-1.0.0rc9.tar.gz", hash = "sha256:9086a4a21ef9b31c72181c77c040a074ba0889ee56a7b289ff0afb0d97655f96"}, ] -faker = [ - {file = "Faker-13.15.1-py3-none-any.whl", hash = "sha256:172e45220b7a46743f4fb58cf380adb306d5c3ab1c0b0d97062508474cec5ff8"}, - {file = "Faker-13.15.1.tar.gz", hash = "sha256:7c3f8ee807d3916415568169a172bf0893ea9cc3371ab55e4e5f5170d2185bea"}, +Faker = [ + {file = "Faker-14.2.0-py3-none-any.whl", hash = "sha256:e02c55a5b0586caaf913cc6c254b3de178e08b031c5922e590fd033ebbdbfd02"}, + {file = "Faker-14.2.0.tar.gz", hash = "sha256:6db56e2c43a2b74250d1c332ef25fef7dc07dcb6c5fab5329dd7b4467b8ed7b9"}, ] filelock = [ - {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, - {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, + {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, + {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, ] flake8 = [ - {file = "flake8-5.0.0-py2.py3-none-any.whl", hash = "sha256:f44e470195849d0596cb488c7bd769086fcbe987c10cc9daae9a13b4136abb24"}, - {file = "flake8-5.0.0.tar.gz", hash = "sha256:503b06b6795189e55298a70b695b1eb4f6b8d479fae81352fc97c72ca242509e"}, + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] +flake8-bugbear = [ + {file = "flake8-bugbear-22.9.11.tar.gz", hash = "sha256:39236c0e97160d1ab05d9f87422173d16e925a6220b3635bfc4aee766bf8194a"}, + {file = "flake8_bugbear-22.9.11-py3-none-any.whl", hash = "sha256:e74350a4cfc670e184f3433c223b1e7378f1cf8345ded6c8f12ac1a50c5df22b"}, ] -flake8-bugbear = [] flake8-comprehensions = [ {file = "flake8-comprehensions-3.10.0.tar.gz", hash = "sha256:181158f7e7aa26a63a0a38e6017cef28c6adee71278ce56ce11f6ec9c4905058"}, {file = "flake8_comprehensions-3.10.0-py3-none-any.whl", hash = "sha256:dad454fd3d525039121e98fa1dd90c46bc138708196a4ebbc949ad3c859adedb"}, ] -flake8-mutable = [] -flake8-print = [] +flake8-mutable = [ + {file = "flake8-mutable-1.2.0.tar.gz", hash = "sha256:ee9b77111b867d845177bbc289d87d541445ffcc6029a0c5c65865b42b18c6a6"}, + {file = "flake8_mutable-1.2.0-py2-none-any.whl", hash = "sha256:38fd9dadcbcda6550a916197bc40ed76908119dabb37fbcca30873666c31d2d5"}, +] +flake8-print = [ + {file = "flake8-print-5.0.0.tar.gz", hash = "sha256:76915a2a389cc1c0879636c219eb909c38501d3a43cc8dae542081c9ba48bdf9"}, + {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, +] flake8-simplify = [ {file = "flake8_simplify-0.19.3-py3-none-any.whl", hash = "sha256:1057320e9312d75849541fee822900d27bcad05b2405edc84713affee635629e"}, {file = "flake8_simplify-0.19.3.tar.gz", hash = "sha256:2fb083bf5142a98d9c9554755cf2f56f8926eb4a33eae30c0809041b1546879e"}, ] flake8-type-checking = [ - {file = "flake8-type-checking-2.1.0.tar.gz", hash = "sha256:2c4835e606086af680826fa741fbc1c5d0364f6be18d3419db7131f19c780479"}, - {file = "flake8_type_checking-2.1.0-py3-none-any.whl", hash = "sha256:32fa12dca8e6a5489d9ad31f99b3fc3b66697f9685a2a2a39d19f9a8b7df90ed"}, + {file = "flake8-type-checking-2.1.3.tar.gz", hash = "sha256:a47b790ae6e13cb4c62ea36a3197eaa7b635086544071e3a49d6751f0b6cabe6"}, + {file = "flake8_type_checking-2.1.3-py3-none-any.whl", hash = "sha256:70d198e93c3831b3ae24f6e80f85e3555c19c4eafb39ee4445abb2236c0b6970"}, ] freezegun = [ - {file = "freezegun-1.2.1-py3-none-any.whl", hash = "sha256:15103a67dfa868ad809a8f508146e396be2995172d25f927e48ce51c0bf5cb09"}, - {file = "freezegun-1.2.1.tar.gz", hash = "sha256:b4c64efb275e6bc68dc6e771b17ffe0ff0f90b81a2a5189043550b6519926ba4"}, + {file = "freezegun-1.2.2-py3-none-any.whl", hash = "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f"}, + {file = "freezegun-1.2.2.tar.gz", hash = "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446"}, ] ghp-import = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, @@ -1810,70 +2436,73 @@ gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, ] -gitpython = [ +GitPython = [ {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, ] greenlet = [ - {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, - {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, - {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, - {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, - {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, - {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, - {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, - {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, - {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, - {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, - {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, - {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, - {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, - {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, - {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, - {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, - {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, - {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, - {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, - {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, - {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, -] -griffe = [] -gunicorn = [ - {file = "gunicorn-20.1.0-py3-none-any.whl", hash = "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e"}, - {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"}, + {file = "greenlet-1.1.3-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:8c287ae7ac921dfde88b1c125bd9590b7ec3c900c2d3db5197f1286e144e712b"}, + {file = "greenlet-1.1.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:870a48007872d12e95a996fca3c03a64290d3ea2e61076aa35d3b253cf34cd32"}, + {file = "greenlet-1.1.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7c5227963409551ae4a6938beb70d56bf1918c554a287d3da6853526212fbe0a"}, + {file = "greenlet-1.1.3-cp27-cp27m-win32.whl", hash = "sha256:9fae214f6c43cd47f7bef98c56919b9222481e833be2915f6857a1e9e8a15318"}, + {file = "greenlet-1.1.3-cp27-cp27m-win_amd64.whl", hash = "sha256:de431765bd5fe62119e0bc6bc6e7b17ac53017ae1782acf88fcf6b7eae475a49"}, + {file = "greenlet-1.1.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:510c3b15587afce9800198b4b142202b323bf4b4b5f9d6c79cb9a35e5e3c30d2"}, + {file = "greenlet-1.1.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:9951dcbd37850da32b2cb6e391f621c1ee456191c6ae5528af4a34afe357c30e"}, + {file = "greenlet-1.1.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:07c58e169bbe1e87b8bbf15a5c1b779a7616df9fd3e61cadc9d691740015b4f8"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df02fdec0c533301497acb0bc0f27f479a3a63dcdc3a099ae33a902857f07477"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c88e134d51d5e82315a7c32b914a58751b7353eb5268dbd02eabf020b4c4700"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b41d19c0cfe5c259fe6c539fd75051cd39a5d33d05482f885faf43f7f5e7d26"}, + {file = "greenlet-1.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:6f5d4b2280ceea76c55c893827961ed0a6eadd5a584a7c4e6e6dd7bc10dfdd96"}, + {file = "greenlet-1.1.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:184416e481295832350a4bf731ba619a92f5689bf5d0fa4341e98b98b1265bd7"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd0404d154084a371e6d2bafc787201612a1359c2dee688ae334f9118aa0bf47"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a43bbfa9b6cfdfaeefbd91038dde65ea2c421dc387ed171613df340650874f2"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce5b64dfe8d0cca407d88b0ee619d80d4215a2612c1af8c98a92180e7109f4b5"}, + {file = "greenlet-1.1.3-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:903fa5716b8fbb21019268b44f73f3748c41d1a30d71b4a49c84b642c2fed5fa"}, + {file = "greenlet-1.1.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:0118817c9341ef2b0f75f5af79ac377e4da6ff637e5ee4ac91802c0e379dadb4"}, + {file = "greenlet-1.1.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:466ce0928e33421ee84ae04c4ac6f253a3a3e6b8d600a79bd43fd4403e0a7a76"}, + {file = "greenlet-1.1.3-cp35-cp35m-win32.whl", hash = "sha256:65ad1a7a463a2a6f863661329a944a5802c7129f7ad33583dcc11069c17e622c"}, + {file = "greenlet-1.1.3-cp35-cp35m-win_amd64.whl", hash = "sha256:7532a46505470be30cbf1dbadb20379fb481244f1ca54207d7df3bf0bbab6a20"}, + {file = "greenlet-1.1.3-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:caff52cb5cd7626872d9696aee5b794abe172804beb7db52eed1fd5824b63910"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:db41f3845eb579b544c962864cce2c2a0257fe30f0f1e18e51b1e8cbb4e0ac6d"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:e8533f5111704d75de3139bf0b8136d3a6c1642c55c067866fa0a51c2155ee33"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537e4baf0db67f382eb29255a03154fcd4984638303ff9baaa738b10371fa57"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8bfd36f368efe0ab2a6aa3db7f14598aac454b06849fb633b762ddbede1db90"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0877a9a2129a2c56a2eae2da016743db7d9d6a05d5e1c198f1b7808c602a30e"}, + {file = "greenlet-1.1.3-cp36-cp36m-win32.whl", hash = "sha256:88b04e12c9b041a1e0bcb886fec709c488192638a9a7a3677513ac6ba81d8e79"}, + {file = "greenlet-1.1.3-cp36-cp36m-win_amd64.whl", hash = "sha256:4f166b4aca8d7d489e82d74627a7069ab34211ef5ebb57c300ec4b9337b60fc0"}, + {file = "greenlet-1.1.3-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:cd16a89efe3a003029c87ff19e9fba635864e064da646bc749fc1908a4af18f3"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5b756e6730ea59b2745072e28ad27f4c837084688e6a6b3633c8b1e509e6ae0e"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:9b2f7d0408ddeb8ea1fd43d3db79a8cefaccadd2a812f021333b338ed6b10aba"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44b4817c34c9272c65550b788913620f1fdc80362b209bc9d7dd2f40d8793080"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d58a5a71c4c37354f9e0c24c9c8321f0185f6945ef027460b809f4bb474bfe41"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dd51d2650e70c6c4af37f454737bf4a11e568945b27f74b471e8e2a9fd21268"}, + {file = "greenlet-1.1.3-cp37-cp37m-win32.whl", hash = "sha256:048d2bed76c2aa6de7af500ae0ea51dd2267aec0e0f2a436981159053d0bc7cc"}, + {file = "greenlet-1.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:77e41db75f9958f2083e03e9dd39da12247b3430c92267df3af77c83d8ff9eed"}, + {file = "greenlet-1.1.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:1626185d938d7381631e48e6f7713e8d4b964be246073e1a1d15c2f061ac9f08"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1ec2779774d8e42ed0440cf8bc55540175187e8e934f2be25199bf4ed948cd9e"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f2f908239b7098799b8845e5936c2ccb91d8c2323be02e82f8dcb4a80dcf4a25"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b181e9aa6cb2f5ec0cacc8cee6e5a3093416c841ba32c185c30c160487f0380"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cf45e339cabea16c07586306a31cfcc5a3b5e1626d365714d283732afed6809"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6200a11f003ec26815f7e3d2ded01b43a3810be3528dd760d2f1fa777490c3cd"}, + {file = "greenlet-1.1.3-cp38-cp38-win32.whl", hash = "sha256:db5b25265010a1b3dca6a174a443a0ed4c4ab12d5e2883a11c97d6e6d59b12f9"}, + {file = "greenlet-1.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:095a980288fe05adf3d002fbb180c99bdcf0f930e220aa66fcd56e7914a38202"}, + {file = "greenlet-1.1.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:cbc1eb55342cbac8f7ec159088d54e2cfdd5ddf61c87b8bbe682d113789331b2"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:694ffa7144fa5cc526c8f4512665003a39fa09ef00d19bbca5c8d3406db72fbe"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:aa741c1a8a8cc25eb3a3a01a62bdb5095a773d8c6a86470bde7f607a447e7905"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3a669f11289a8995d24fbfc0e63f8289dd03c9aaa0cc8f1eab31d18ca61a382"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76a53bfa10b367ee734b95988bd82a9a5f0038a25030f9f23bbbc005010ca600"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb0aa7f6996879551fd67461d5d3ab0c3c0245da98be90c89fcb7a18d437403"}, + {file = "greenlet-1.1.3-cp39-cp39-win32.whl", hash = "sha256:5fbe1ab72b998ca77ceabbae63a9b2e2dc2d963f4299b9b278252ddba142d3f1"}, + {file = "greenlet-1.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:ffe73f9e7aea404722058405ff24041e59d31ca23d1da0895af48050a07b6932"}, + {file = "greenlet-1.1.3.tar.gz", hash = "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455"}, +] +griffe = [ + {file = "griffe-0.22.1-py3-none-any.whl", hash = "sha256:60b7906db5460277afdba17808ade1c9e099b20a6b8d8d1d152714daaa463cb7"}, + {file = "griffe-0.22.1.tar.gz", hash = "sha256:0130019b0b3966e9d755d9acb82fe9b64e354064ce971306e5892c098bf1a5c7"}, ] h11 = [ - {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, - {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, + {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, + {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, ] hiredis = [ {file = "hiredis-2.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b4c8b0bc5841e578d5fb32a16e0c305359b987b850a06964bd5a62739d688048"}, @@ -1919,60 +2548,67 @@ hiredis = [ {file = "hiredis-2.0.0.tar.gz", hash = "sha256:81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a"}, ] httpcore = [ - {file = "httpcore-0.15.0-py3-none-any.whl", hash = "sha256:1105b8b73c025f23ff7c36468e4432226cbb959176eab66864b8e31c4ee27fa6"}, - {file = "httpcore-0.15.0.tar.gz", hash = "sha256:18b68ab86a3ccf3e7dc0f43598eaddcf472b602aba29f9aa6ab85fe2ada3980b"}, + {file = "httpcore-0.13.2-py3-none-any.whl", hash = "sha256:52b7d9413f6f5592a667de9209d70d4d41aba3fb0540dd7c93475c78b85941e9"}, + {file = "httpcore-0.13.2.tar.gz", hash = "sha256:c16efbdf643e1b57bde0adc12c53b08645d7d92d6d345a3f71adfc2a083e7fd2"}, ] httptools = [ - {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5"}, - {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23"}, - {file = "httptools-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed"}, - {file = "httptools-0.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683"}, - {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c"}, - {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919"}, - {file = "httptools-0.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe"}, - {file = "httptools-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd"}, - {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c"}, - {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e"}, - {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d"}, - {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae"}, - {file = "httptools-0.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777"}, - {file = "httptools-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111"}, - {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1"}, - {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0"}, - {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af"}, - {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4"}, - {file = "httptools-0.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe"}, - {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b"}, - {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a"}, - {file = "httptools-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48"}, - {file = "httptools-0.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad"}, - {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3"}, - {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409"}, - {file = "httptools-0.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de"}, - {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890"}, - {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055"}, - {file = "httptools-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855"}, - {file = "httptools-0.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722"}, - {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424"}, - {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d"}, - {file = "httptools-0.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83"}, - {file = "httptools-0.4.0.tar.gz", hash = "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff"}, + {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"}, + {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421"}, + {file = "httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449"}, + {file = "httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2"}, + {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde"}, + {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a"}, + {file = "httptools-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d"}, + {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e"}, + {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49"}, + {file = "httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9"}, + {file = "httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986"}, + {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0"}, + {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f"}, + {file = "httptools-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1"}, + {file = "httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f"}, + {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7"}, + {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60"}, + {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca"}, + {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324"}, + {file = "httptools-0.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86"}, + {file = "httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b"}, + {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b"}, + {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281"}, + {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b"}, + {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25"}, + {file = "httptools-0.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5"}, + {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6"}, + {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c"}, + {file = "httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc"}, + {file = "httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63"}, + {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d"}, + {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901"}, + {file = "httptools-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd"}, + {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6"}, + {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42"}, + {file = "httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887"}, + {file = "httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2"}, + {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142"}, + {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372"}, + {file = "httptools-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b"}, + {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, ] httpx = [ - {file = "httpx-0.23.0-py3-none-any.whl", hash = "sha256:42974f577483e1e932c3cdc3cd2303e883cbfba17fe228b0f63589764d7b9c4b"}, - {file = "httpx-0.23.0.tar.gz", hash = "sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"}, + {file = "httpx-0.18.1-py3-none-any.whl", hash = "sha256:ad2e3db847be736edc4b272c4d5788790a7e5789ef132fc6b5fef8aeb9e9f6e0"}, + {file = "httpx-0.18.1.tar.gz", hash = "sha256:0a2651dd2b9d7662c70d12ada5c290abcf57373b9633515fe4baa9f62566086f"}, ] hypothesis = [ - {file = "hypothesis-6.53.0-py3-none-any.whl", hash = "sha256:9c2b073731010cc00bcf060e71bd8f9507f6fe8f6d173f454634d1b91c537412"}, - {file = "hypothesis-6.53.0.tar.gz", hash = "sha256:39f225530c28fe484a59c39839c8a2fb414f2ecfd4743f75d82f55e0f09268c0"}, + {file = "hypothesis-6.54.5-py3-none-any.whl", hash = "sha256:d8d2e18139be18e5c95593f1e2d87dbcd21534a32022a1db6e8ac2d458ee1d1a"}, + {file = "hypothesis-6.54.5.tar.gz", hash = "sha256:8a9056825695f415bfad4e808ae719fc01383a9ab659775319724365afcc7ec7"}, ] identify = [ - {file = "identify-2.5.2-py2.py3-none-any.whl", hash = "sha256:feaa9db2dc0ce333b453ce171c0cf1247bbfde2c55fc6bb785022d411a1b78b5"}, - {file = "identify-2.5.2.tar.gz", hash = "sha256:a3d4c096b384d50d5e6dc5bc8b9bc44f1f61cefebd750a7b3e9f939b53fb214d"}, + {file = "identify-2.5.5-py2.py3-none-any.whl", hash = "sha256:ef78c0d96098a3b5fe7720be4a97e73f439af7cf088ebf47b620aeaa10fadf97"}, + {file = "identify-2.5.5.tar.gz", hash = "sha256:322a5699daecf7c6fd60e68852f36f2ecbb6a36ff6e6e973e0d2bb6fca203ee6"}, ] idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] importlib-metadata = [ {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, @@ -1986,7 +2622,7 @@ isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] -jinja2 = [ +Jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] @@ -2029,15 +2665,15 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] -mako = [ - {file = "Mako-1.2.1-py3-none-any.whl", hash = "sha256:df3921c3081b013c8a2d5ff03c18375651684921ae83fd12e64800b7da923257"}, - {file = "Mako-1.2.1.tar.gz", hash = "sha256:f054a5ff4743492f1aa9ecc47172cb33b42b9d993cffcc146c9de17e717b0307"}, +Mako = [ + {file = "Mako-1.2.2-py3-none-any.whl", hash = "sha256:8efcb8004681b5f71d09c983ad5a9e6f5c40601a6ec469148753292abc0da534"}, + {file = "Mako-1.2.2.tar.gz", hash = "sha256:3724869b363ba630a272a5f89f68c070352137b8fd1757650017b7e06fda163f"}, ] -markdown = [ +Markdown = [ {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, ] -markupsafe = [ +MarkupSafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, @@ -2091,17 +2727,26 @@ mkdocs = [ {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, ] -mkdocs-autorefs = [] +mkdocs-autorefs = [ + {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, + {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, +] mkdocs-material = [ - {file = "mkdocs-material-8.3.9.tar.gz", hash = "sha256:dc82b667d2a83f0de581b46a6d0949732ab77e7638b87ea35b770b33bc02e75a"}, - {file = "mkdocs_material-8.3.9-py2.py3-none-any.whl", hash = "sha256:263f2721f3abe533b61f7c8bed435a0462620912742c919821ac2d698b4bfe67"}, + {file = "mkdocs-material-8.5.0.tar.gz", hash = "sha256:1b9e03b93c26db7c1b520480978024916eda73b49eb5818820cc10f4665f00fc"}, + {file = "mkdocs_material-8.5.0-py2.py3-none-any.whl", hash = "sha256:1bfd05e6e159db2c5f95821dc3c7afdc7a5a3a7acc544c3102f7acb28691f407"}, ] mkdocs-material-extensions = [ {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"}, ] -mkdocstrings = [] -mkdocstrings-python = [] +mkdocstrings = [ + {file = "mkdocstrings-0.19.0-py3-none-any.whl", hash = "sha256:3217d510d385c961f69385a670b2677e68e07b5fea4a504d86bf54c006c87c7d"}, + {file = "mkdocstrings-0.19.0.tar.gz", hash = "sha256:efa34a67bad11229d532d89f6836a8a215937548623b64f3698a1df62e01cc3e"}, +] +mkdocstrings-python = [ + {file = "mkdocstrings-python-0.7.1.tar.gz", hash = "sha256:c334b382dca202dfa37071c182418a6df5818356a95d54362a2b24822ca3af71"}, + {file = "mkdocstrings_python-0.7.1-py3-none-any.whl", hash = "sha256:a22060bfa374697678e9af4e62b020d990dad2711c98f7a9fac5c0345bef93c7"}, +] mypy = [ {file = "mypy-0.971-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2899a3cbd394da157194f913a931edfd4be5f274a88041c9dc2d9cdcb1c315c"}, {file = "mypy-0.971-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98e02d56ebe93981c41211c05adb630d1d26c14195d04d95e49cd97dbc046dc5"}, @@ -2135,93 +2780,157 @@ nodeenv = [ {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, ] -openapi-schema-pydantic = [ - {file = "openapi-schema-pydantic-1.2.4.tar.gz", hash = "sha256:3e22cf58b74a69f752cc7e5f1537f6e44164282db2700cbbcd3bb99ddd065196"}, - {file = "openapi_schema_pydantic-1.2.4-py3-none-any.whl", hash = "sha256:a932ecc5dcbb308950282088956e94dea069c9823c84e507d64f6b622222098c"}, -] orjson = [ - {file = "orjson-3.7.11-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:51e00a59dd6486c40f395da07633718f50b85af414e1add751f007dde6248090"}, - {file = "orjson-3.7.11-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:c84d096f800d8cf062f8f514bb89baa1f067259ad8f71889b1d204039c2e2dd7"}, - {file = "orjson-3.7.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7051f5259aeef76492763a458d3d05efe820c0d20439aa3d3396b427fb40f85d"}, - {file = "orjson-3.7.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5b9ed454bf5237ad4bb0ec2170329a9a74dab065eaf2a2c31b84a7eff96c72"}, - {file = "orjson-3.7.11-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3f8c767331039e4e12324a6af41d3538c503503bdf107f40d4e292bb5542ff90"}, - {file = "orjson-3.7.11-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:fd9508534ae29b368a60deb7668a65801869bc96635ee64550b7c119205984c0"}, - {file = "orjson-3.7.11-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7168059c4a02f3cbe2ce3a26908e199e38fe55feb325ee7484c61f15719ec85e"}, - {file = "orjson-3.7.11-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:87ab1b07ec863d870e8b2abcbae4da62aae2aed3a5119938a4b6309aa94ec973"}, - {file = "orjson-3.7.11-cp310-none-win_amd64.whl", hash = "sha256:01863ff99f67afdb1a3a6a777d2de5a81f9b8203db70ef450b25363e7db48442"}, - {file = "orjson-3.7.11-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a7962f2fb550a11f3e785c0aabfde6c2e7f823995f9d2d71f759708c6117a902"}, - {file = "orjson-3.7.11-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:4d33d13b0521ddca84b58c9a75c18e854b79480a6a13e6d0c105cfc0d4e8b2a7"}, - {file = "orjson-3.7.11-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b62b758b220f5deb6c90381baed8afec5d9b72e916886d73e944b78be3524f39"}, - {file = "orjson-3.7.11-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9390a69422ec12264bf76469c1cbd006a8672a552e7cc393664c66011343da71"}, - {file = "orjson-3.7.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a48e232130437fdbfc6c025cbf8aaac92c13ba1d9f7bd4445e177aae2f282028"}, - {file = "orjson-3.7.11-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:da1637f98a5e2ac6fe1a722f990474fbf05ca15a21f8bfbc2d06a14c62f74bfa"}, - {file = "orjson-3.7.11-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c2f52563dcb0c500f9c9a028459950e1d14b66f504f8e5cdb50122a2538b38b0"}, - {file = "orjson-3.7.11-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fbebb207a9d104efbd5e1b3e7dc3b63723ebbcd73f589f01bc7466b36c185e51"}, - {file = "orjson-3.7.11-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18026b1b1a0c78e277b07230e2713af79ec4b9a8225a778983fd2f8455ae0e09"}, - {file = "orjson-3.7.11-cp37-none-win_amd64.whl", hash = "sha256:77dff65c25dffea9e7dd9d41d3b55248dad2f6bf622d89e8ebb19a76780f9cd7"}, - {file = "orjson-3.7.11-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:f76e9d7a0c1a586999094bbfbed5c17246dc217ffea061356b7056d3805b31b8"}, - {file = "orjson-3.7.11-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:0479adf8c7f18ba52ce30b64a03de2f1facb85b7a620832a0c8d5e01326f32bd"}, - {file = "orjson-3.7.11-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:113add34e29ef4a0f8538d67dc4992a950a7b4f49e556525cd8247c82a3d3f6c"}, - {file = "orjson-3.7.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cc542d3d2105fb7fb90a445ebe68f38cd846e6d86ea2c6e8724afbb9f052fc"}, - {file = "orjson-3.7.11-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:42e41ceda915e1602c0c8f5b00b0f852c8c0bb2f9262138e13bf02128de8a0b7"}, - {file = "orjson-3.7.11-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:df7f9b5d8c35e59c7df137587ebad2ec1d54947bbc6c7b1c4e7083c7012e3bba"}, - {file = "orjson-3.7.11-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:17b77c2155da5186c18e3fe2ed5dc0d6babde5758fae81934a0a348c26430849"}, - {file = "orjson-3.7.11-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7fcbfc44a7fd94f55652e6705e03271c43b2a171220ee31d6447721b690acd9"}, - {file = "orjson-3.7.11-cp38-none-win_amd64.whl", hash = "sha256:78177a47c186cd6188e624477cbaf91c941a03047afe8b8816091495bc6481ce"}, - {file = "orjson-3.7.11-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:3a5324f0da7b15df64b6b586608af503c7fa8b0cfb6e2b9f4f4fdc4855af6978"}, - {file = "orjson-3.7.11-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:5c063c9777b5f795b9d59ba8d58b44548e3f2e9a00a9e3ddddb8145d9eb57b68"}, - {file = "orjson-3.7.11-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf99de2f61fb8014a755640f9e2768890baf9aa1365742ccc3b9e6a19f528b16"}, - {file = "orjson-3.7.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71bc8155a08239a655d4cf821f106a0821d4eb566f7c7a0163ccc41763488116"}, - {file = "orjson-3.7.11-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:02a4875acb6e5f6109c40f7b9e27313bbe67f2c3e4d5ea01390ae9399061d913"}, - {file = "orjson-3.7.11-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:6fc774923377e8594bf54291854919155e3c785081e95efc6cfcc9d76657a906"}, - {file = "orjson-3.7.11-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:01c77aab9ed881cc4322aca6ca3c534473f5334e5211b8dbb8622769595439ce"}, - {file = "orjson-3.7.11-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ee69490145cc7d338a376a342415bba2f0c4d219f213c23fb64948cc40d9f255"}, - {file = "orjson-3.7.11-cp39-none-win_amd64.whl", hash = "sha256:145367654c236127f59894025a5354bce124bd6ee1d5417c28635969b7628482"}, - {file = "orjson-3.7.11.tar.gz", hash = "sha256:b4e6517861a397d9a1c72e7f8e8c72d6baf96d732a64637fb090ea49ead6042c"}, + {file = "orjson-3.8.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:9a93850a1bdc300177b111b4b35b35299f046148ba23020f91d6efd7bf6b9d20"}, + {file = "orjson-3.8.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:7536a2a0b41672f824912aeab545c2467a9ff5ca73a066ff04fb81043a0a177a"}, + {file = "orjson-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66c19399bb3b058e3236af7910b57b19a4fc221459d722ed72a7dc90370ca090"}, + {file = "orjson-3.8.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b391d5c2ddc2f302d22909676b306cb6521022c3ee306c861a6935670291b2c"}, + {file = "orjson-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bdb1042970ca5f544a047d6c235a7eb4acdb69df75441dd1dfcbc406377ab37"}, + {file = "orjson-3.8.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:d189e2acb510e374700cb98cf11b54f0179916ee40f8453b836157ae293efa79"}, + {file = "orjson-3.8.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6a23b40c98889e9abac084ce5a1fb251664b41da9f6bdb40a4729e2288ed2ed4"}, + {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b68a42a31f8429728183c21fb440c21de1b62e5378d0d73f280e2d894ef8942e"}, + {file = "orjson-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ff13410ddbdda5d4197a4a4c09969cb78c722a67550f0a63c02c07aadc624833"}, + {file = "orjson-3.8.0-cp310-none-win_amd64.whl", hash = "sha256:2d81e6e56bbea44be0222fb53f7b255b4e7426290516771592738ca01dbd053b"}, + {file = "orjson-3.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e2defd9527651ad39ec20ae03c812adf47ef7662bdd6bc07dabb10888d70dc62"}, + {file = "orjson-3.8.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9e6ac22cec72d5b39035b566e4b86c74b84866f12b5b0b6541506a080fb67d6d"}, + {file = "orjson-3.8.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e2f4a5542f50e3d336a18cb224fc757245ca66b1fd0b70b5dd4471b8ff5f2b0e"}, + {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1418feeb8b698b9224b1f024555895169d481604d5d884498c1838d7412794c"}, + {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6e3da2e4bd27c3b796519ca74132c7b9e5348fb6746315e0f6c1592bc5cf1caf"}, + {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896a21a07f1998648d9998e881ab2b6b80d5daac4c31188535e9d50460edfcf7"}, + {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:4065906ce3ad6195ac4d1bddde862fe811a42d7be237a1ff762666c3a4bb2151"}, + {file = "orjson-3.8.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:5f856279872a4449fc629924e6a083b9821e366cf98b14c63c308269336f7c14"}, + {file = "orjson-3.8.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1b1cd25acfa77935bb2e791b75211cec0cfc21227fe29387e553c545c3ff87e1"}, + {file = "orjson-3.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3e2459d441ab8fd8b161aa305a73d5269b3cda13b5a2a39eba58b4dd3e394f49"}, + {file = "orjson-3.8.0-cp37-none-win_amd64.whl", hash = "sha256:d2b5dafbe68237a792143137cba413447f60dd5df428e05d73dcba10c1ea6fcf"}, + {file = "orjson-3.8.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5b072ef8520cfe7bd4db4e3c9972d94336763c2253f7c4718a49e8733bada7b8"}, + {file = "orjson-3.8.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e68c699471ea3e2dd1b35bfd71c6a0a0e4885b64abbe2d98fce1ef11e0afaff3"}, + {file = "orjson-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7225e8b08996d1a0c804d3a641a53e796685e8c9a9fd52bd428980032cad9a"}, + {file = "orjson-3.8.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f687776a03c19f40b982fb5c414221b7f3d19097841571be2223d1569a59877"}, + {file = "orjson-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7990a9caf3b34016ac30be5e6cfc4e7efd76aa85614a1215b0eae4f0c7e3db59"}, + {file = "orjson-3.8.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:02d638d43951ba346a80f0abd5942a872cc87db443e073f6f6fc530fee81e19b"}, + {file = "orjson-3.8.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:f4b46dbdda2f0bd6480c39db90b21340a19c3b0fcf34bc4c6e465332930ca539"}, + {file = "orjson-3.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:655d7387a1634a9a477c545eea92a1ee902ab28626d701c6de4914e2ed0fecd2"}, + {file = "orjson-3.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5edb93cdd3eb32977633fa7aaa6a34b8ab54d9c49cdcc6b0d42c247a29091b22"}, + {file = "orjson-3.8.0-cp38-none-win_amd64.whl", hash = "sha256:03ed95814140ff09f550b3a42e6821f855d981c94d25b9cc83e8cca431525d70"}, + {file = "orjson-3.8.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7b0e72974a5d3b101226899f111368ec2c9824d3e9804af0e5b31567f53ad98a"}, + {file = "orjson-3.8.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:6ea5fe20ef97545e14dd4d0263e4c5c3bc3d2248d39b4b0aed4b84d528dfc0af"}, + {file = "orjson-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6433c956f4a18112342a18281e0bec67fcd8b90be3a5271556c09226e045d805"}, + {file = "orjson-3.8.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87462791dd57de2e3e53068bf4b7169c125c50960f1bdda08ed30c797cb42a56"}, + {file = "orjson-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be02f6acee33bb63862eeff80548cd6b8a62e2d60ad2d8dfd5a8824cc43d8887"}, + {file = "orjson-3.8.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:a709c2249c1f2955dbf879506fd43fa08c31fdb79add9aeb891e3338b648bf60"}, + {file = "orjson-3.8.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2065b6d280dc58f131ffd93393737961ff68ae7eb6884b68879394074cc03c13"}, + {file = "orjson-3.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fd6cac83136e06e538a4d17117eaeabec848c1e86f5742d4811656ad7ee475f"}, + {file = "orjson-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:25b5e48fbb9f0b428a5e44cf740675c9281dd67816149fc33659803399adbbe8"}, + {file = "orjson-3.8.0-cp39-none-win_amd64.whl", hash = "sha256:2058653cc12b90e482beacb5c2d52dc3d7606f9e9f5a52c1c10ef49371e76f52"}, + {file = "orjson-3.8.0.tar.gz", hash = "sha256:fb42f7cf57d5804a9daa6b624e3490ec9e2631e042415f3aebe9f35a8492ba6c"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +passlib = [ + {file = "passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1"}, + {file = "passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04"}, +] pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, ] pbr = [ - {file = "pbr-5.9.0-py2.py3-none-any.whl", hash = "sha256:e547125940bcc052856ded43be8e101f63828c2d94239ffbe2b327ba3d5ccf0a"}, - {file = "pbr-5.9.0.tar.gz", hash = "sha256:e8dca2f4b43560edef58813969f52a56cef023146cbb8931626db80e6c1c4308"}, + {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, + {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] picologging = [ - {file = "picologging-0.6.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:3972954562b77ab40e4c0215c15b08c12cc8af5dc6ae70ba2a2009cd4e1c6f4d"}, - {file = "picologging-0.6.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:e69833066cdd6146a88141f15d374b067d7415a5ac0aa17d7b0afd075957307f"}, - {file = "picologging-0.6.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a08d7feea5a33665b7ab3104f956d24eb18bfc045af0c44811a72d349fcc085"}, - {file = "picologging-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83647233aad50b4b77c77752a268b46f344376d0464376a3f5ddf04c060c5df8"}, - {file = "picologging-0.6.0-cp310-cp310-win32.whl", hash = "sha256:f9c36932d03bbb0207e1ba9f7c3d613554a498ad993bde5b2e26a671e13eb6be"}, - {file = "picologging-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:69cfb58d14271587e97fbce56af460441feaa00423119808511aa01787949800"}, - {file = "picologging-0.6.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:aab351781f51202b5a0b82d0f941df0d64f597f6de3bf2366cd8bae553379315"}, - {file = "picologging-0.6.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:a3b0232a0256d2ea65e97fd068ce12ee9973c5918dac80a2624cdac457fc213a"}, - {file = "picologging-0.6.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdb0954f82b6749561a9f3870726f75d67b85149342f4ff23fa07a99323d137d"}, - {file = "picologging-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be7eed35e3982e4a495b0ad5b9076204d0faf208c8b8eab3017001c610042bfd"}, - {file = "picologging-0.6.0-cp311-cp311-win32.whl", hash = "sha256:a543c9ccd5b5bef20b4adb2d1e904fac7e670ffa9414c78300bff18857fb88ba"}, - {file = "picologging-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:848ffd19b9b15291f06bfaa37f35d6194365f57f26d2424fab9aac81a1d6329a"}, - {file = "picologging-0.6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:ba291ee71709e9c00cd4406bcff1f936bac398a084b8d4b509bc72a713746f18"}, - {file = "picologging-0.6.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:957b3034bd7e72269a9996f9d2243efd6bd2b7cd0cfe9a68db4d7171e461db10"}, - {file = "picologging-0.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49487d3d00046fed9621561116893f3dd115eb6979f7429875887429e5dbcf60"}, - {file = "picologging-0.6.0-cp37-cp37m-win32.whl", hash = "sha256:e2eca9862d5c12d943cdf70d6d5c59c1a66bc198b7701f16696e895921a967b9"}, - {file = "picologging-0.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:fb503387045a5a0c7987a550be8c6bddce16df075ef237e543267c1c077f07da"}, - {file = "picologging-0.6.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:5edb5a1ae75a0fe30785d211645da34fae66984afea5d6791dad9fa85d63d6ec"}, - {file = "picologging-0.6.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:8cfa79bd019f79f0d2f532dab1ac03e933df71291a10d6edf2d69d383a377fed"}, - {file = "picologging-0.6.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a07e78b8941facf8df9ac3bd1f78c5284db54404a03f9e382c0f0f5f81c2f4d"}, - {file = "picologging-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c05dc2a507d0a4310a7ff20e197a4b5e3090aa9f2411c49a30ed685f88dbe67"}, - {file = "picologging-0.6.0-cp38-cp38-win32.whl", hash = "sha256:a3a370e37cb91e32de43f23e4eb7cd82fa5302df53b7889e8fe08f7a3c48e983"}, - {file = "picologging-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:63fc3a2b2a03cf56beb797818a30d9efb48ffd4b10e08986bfe60e1db68e9c7f"}, - {file = "picologging-0.6.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:31590a7e800482992239767a016c8b61c29e43b580d4263ed3de606856033d61"}, - {file = "picologging-0.6.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:96c595d2951e3e5178a48e515547150b94ee66c7c4ece3c17da9dcfbdbc304fe"}, - {file = "picologging-0.6.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abc6646e4d2e2f3108902711106098502914ad34f5b9c937572c377cd05ebe2d"}, - {file = "picologging-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29f45b2e8c2ce3b2eee86fe25afd361a017722441773a9bede80da1024b8c096"}, - {file = "picologging-0.6.0-cp39-cp39-win32.whl", hash = "sha256:a02605cb6974a2747b3576547268d0d0caca35841cac6b714c32a18092d738c8"}, - {file = "picologging-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:be34fb90fac1d5fdc645bcd78b34dd542b98f1967107ba70277b25dd17cc0b06"}, - {file = "picologging-0.6.0.tar.gz", hash = "sha256:ba9808cbd2c87e69e7679a3b584201854e97679826672c2d4ccd376f8a1387fb"}, + {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:262afe4b6189a2c84db8a0b43255ea44288b3a86caa1f2c997fd79b899882c9d"}, + {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:d6f7e80c7036b0d101c61c963089127fe777147d191dcbb6554d17532137fdc0"}, + {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad5edd2f74432c5520b22dcf3dd18f5c99c6319452d326c3e4c2d2a9e77431a"}, + {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6fd92dd034e19fd9f34af5442a4c3d56876427c8efaeb70bbe1fd60e5e45fbf"}, + {file = "picologging-0.8.1-cp310-cp310-win32.whl", hash = "sha256:c17351e6fe9bbd1c646105a88e2b54529c85f756c369d3bb030e07dac2ca31ce"}, + {file = "picologging-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:b7e12162ec7c62bac42c2cfafaee73d787ee3006d37425431bc85eae18324c92"}, + {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f76ab45250ea48a5bd8c8f78dc60b6268deca643f3e4d0880a161f96c39b4901"}, + {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:aa4278eb5dedc6e34004dd8bf1dec30fac36c89c5730ae46b024a0c6b73792df"}, + {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9470c0ed2c5cb1bb46ed3c25b678ff92c3c7a3072c61451879d85442cdb30e26"}, + {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:625626f283c9c5c17baeb32c1722a048d630cce43cbb064baa16ec192b1a485e"}, + {file = "picologging-0.8.1-cp311-cp311-win32.whl", hash = "sha256:07ebb45bcc9e4cf59abf902faf408ccab5217eb6e6c0f270bbc055481f9590de"}, + {file = "picologging-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:05b267a0979b4b6fa21ad33a8e9194b72808653fb4785c6682ec9fa958ab9c02"}, + {file = "picologging-0.8.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:307b5e3a8740e1bfe2872448ca0b0410a159bfba8ddeb46a30d97469801d4703"}, + {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4e48cde8e4302a13fe64869dcbd158a70d49c22f812f19e9e34aaddc4fbf4fa"}, + {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f4bff6ec169fe21faa63576b80219471822541fb8e6072f03e231c97c8489"}, + {file = "picologging-0.8.1-cp37-cp37m-win32.whl", hash = "sha256:392e5823d38531cf6c516ddaaf2d7ffee8640ae5783039401899352048a90a41"}, + {file = "picologging-0.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3b7c3084cbb56a33d20b32ad1f4b7eb1f7bc07f4a737b98c2f374c635a11f0b6"}, + {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:a99f94e5ef0e05123a9dfd56979fcb0ef87ef307e5d6955781a7d5af3aae332d"}, + {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:2ea4226d1dad2ad1a7206b23e1969a9593fe47fbd8e3e74c76d59ebe58c2679e"}, + {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f20a93feedaa4617258215444946a3f7ea768465536eeea2172b4754b4d08bb1"}, + {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b25d97b9d94e78f181319f39f25b34f4907ab420df9f8efafae8432e174c576"}, + {file = "picologging-0.8.1-cp38-cp38-win32.whl", hash = "sha256:04f6cd30441300798b3d20353acba554c51488097b523ff1dff33c689c3e5dde"}, + {file = "picologging-0.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:ea507fd1f7c71e9da9484ab234ea4613979abf994c59602d64640fced81d994f"}, + {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:1c5993c9d219f9c4c6bf8ab9091db4e15d6dfb484cdada7d939ea7902a7b0575"}, + {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:41ff34882e1358a8d6606701394cfceca8b810ce5b289d37229219cacde8bd29"}, + {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf77b97df9f3a2b754f5237ea96c92fa6b4f703c881f9ffad275b7832b4aa7ac"}, + {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74933bf930b60904ef66b7b4b695952ca86442c023dcf9917ea63a124de22fa2"}, + {file = "picologging-0.8.1-cp39-cp39-win32.whl", hash = "sha256:0662cee1a580cbc92c709a703e8be09642c04b1ccd06e22a70af206f571f51c3"}, + {file = "picologging-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:176f2b87e3638b100cde401de64e4886293f3cc2937af805d0b15669561baedb"}, + {file = "picologging-0.8.1.tar.gz", hash = "sha256:c0e263937a7fad3d3ec91c2311356f7ff699f605e960fac3eae409ff5b2f330a"}, +] +Pillow = [ + {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, + {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"}, + {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"}, + {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"}, + {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"}, + {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"}, + {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"}, + {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"}, + {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"}, + {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"}, + {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"}, + {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"}, + {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"}, + {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"}, + {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"}, + {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"}, + {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"}, + {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"}, + {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"}, + {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"}, + {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"}, + {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"}, + {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"}, + {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"}, ] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, @@ -2231,67 +2940,94 @@ pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -pre-commit = [] +pre-commit = [ + {file = "pre_commit-2.20.0-py2.py3-none-any.whl", hash = "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7"}, + {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"}, +] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pyasn1 = [ + {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, + {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, + {file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"}, + {file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"}, + {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, + {file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"}, + {file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"}, + {file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"}, + {file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"}, + {file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"}, + {file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"}, + {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"}, + {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, +] pycodestyle = [ - {file = "pycodestyle-2.9.0-py2.py3-none-any.whl", hash = "sha256:289cdc0969d589d90752582bef6dff57c5fbc6949ee8b013ad6d6449a8ae9437"}, - {file = "pycodestyle-2.9.0.tar.gz", hash = "sha256:beaba44501f89d785be791c9462553f06958a221d166c64e1f107320f839acc2"}, + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] pydantic = [ - {file = "pydantic-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193"}, - {file = "pydantic-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310"}, - {file = "pydantic-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580"}, - {file = "pydantic-1.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd"}, - {file = "pydantic-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd"}, - {file = "pydantic-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918"}, - {file = "pydantic-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a"}, - {file = "pydantic-1.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166"}, - {file = "pydantic-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b"}, - {file = "pydantic-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e"}, - {file = "pydantic-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537"}, - {file = "pydantic-1.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380"}, - {file = "pydantic-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a"}, - {file = "pydantic-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195"}, - {file = "pydantic-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49"}, - {file = "pydantic-1.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6"}, - {file = "pydantic-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6"}, - {file = "pydantic-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f"}, - {file = "pydantic-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761"}, - {file = "pydantic-1.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd"}, - {file = "pydantic-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1"}, - {file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"}, - {file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"}, + {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, + {file = "pydantic-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c"}, + {file = "pydantic-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52"}, + {file = "pydantic-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c"}, + {file = "pydantic-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d"}, + {file = "pydantic-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965"}, + {file = "pydantic-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda"}, + {file = "pydantic-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6"}, + {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, + {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, ] pydantic-factories = [ - {file = "pydantic-factories-1.4.1.tar.gz", hash = "sha256:0ac03224ba5677de3d43d304beb4648c0dcbdf0e997e5c6d34af0d09794ccb81"}, - {file = "pydantic_factories-1.4.1-py3-none-any.whl", hash = "sha256:775e550c359ad32cb23e723dfba7b3bda2043880e5db7dd64d2d2948f87b894f"}, + {file = "pydantic-factories-1.6.1.tar.gz", hash = "sha256:a753e7ca6d5fa5d9714ae53ae4e3210a7bfd2e80b75f4d2c68ca40c08726856a"}, + {file = "pydantic_factories-1.6.1-py3-none-any.whl", hash = "sha256:f8b55806a5f94d2c42ebd34e723831ac359002e5b567c89b16b9d45250f853d8"}, +] +pydantic-openapi-schema = [ + {file = "pydantic-openapi-schema-1.2.0.tar.gz", hash = "sha256:f65bb3d5fd68b8e84c92f425d2392ba987b0cafea433f5bf3f3347086eaf8d92"}, + {file = "pydantic_openapi_schema-1.2.0-py3-none-any.whl", hash = "sha256:cab8f643acf0d4d01042db0e7c3899d4f8a455c0f31a3ce6fba3e0706beee4e9"}, ] pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] -pygments = [ - {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, - {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, +Pygments = [ + {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, + {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, ] pylint = [ - {file = "pylint-2.14.5-py3-none-any.whl", hash = "sha256:fabe30000de7d07636d2e82c9a518ad5ad7908590fe135ace169b44839c15f90"}, - {file = "pylint-2.14.5.tar.gz", hash = "sha256:487ce2192eee48211269a0e976421f334cf94de1806ca9d0a99449adcdf0285e"}, + {file = "pylint-2.15.2-py3-none-any.whl", hash = "sha256:cc3da458ba810c49d330e09013dec7ced5217772dec8f043ccdd34dae648fde8"}, + {file = "pylint-2.15.2.tar.gz", hash = "sha256:f63404a2547edb5247da263748771ac9a806ed1de4174cda01293c08ddbc2999"}, ] pymdown-extensions = [ {file = "pymdown_extensions-9.5-py3-none-any.whl", hash = "sha256:ec141c0f4983755349f0c8710416348d1a13753976c028186ed14f190c8061c4"}, @@ -2302,10 +3038,13 @@ pyparsing = [ {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pytest = [ - {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, - {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, + {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, + {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.19.0.tar.gz", hash = "sha256:ac4ebf3b6207259750bc32f4c1d8fcd7e79739edbc67ad0c58dd150b1d072fed"}, + {file = "pytest_asyncio-0.19.0-py3-none-any.whl", hash = "sha256:7a97e37cfe1ed296e2e84941384bdd37c376453912d397ed39293e0916f521fa"}, ] -pytest-asyncio = [] pytest-cov = [ {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, @@ -2314,23 +3053,27 @@ pytest-dotenv = [ {file = "pytest-dotenv-0.5.2.tar.gz", hash = "sha256:2dc6c3ac6d8764c71c6d2804e902d0ff810fa19692e95fe138aefc9b1aa73732"}, {file = "pytest_dotenv-0.5.2-py3-none-any.whl", hash = "sha256:40a2cece120a213898afaa5407673f6bd924b1fa7eafce6bda0e8abffe2f710f"}, ] -pytest-mock = [] +pytest-mock = [ + {file = "pytest-mock-3.8.2.tar.gz", hash = "sha256:77f03f4554392558700295e05aed0b1096a20d4a60a4f3ddcde58b0c31c8fca2"}, + {file = "pytest_mock-3.8.2-py3-none-any.whl", hash = "sha256:8a9e226d6c0ef09fcf20c94eb3405c388af438a90f3e39687f84166da82d5948"}, +] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] python-dotenv = [ - {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, - {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, + {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"}, + {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"}, ] -python-multipart = [ - {file = "python-multipart-0.0.5.tar.gz", hash = "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"}, +python-jose = [ + {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, + {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, ] pyupgrade = [ {file = "pyupgrade-2.37.3-py2.py3-none-any.whl", hash = "sha256:9746efd064dbf53d7f86d6f88a1d48120f58dbfc378f517768634740ea2225e2"}, {file = "pyupgrade-2.37.3.tar.gz", hash = "sha256:1414c7a7c558004cf610e6180716b876814b639b5a5789c3da023c5cdaebcd49"}, ] -pyyaml = [ +PyYAML = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, @@ -2365,7 +3108,7 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -pyyaml-env-tag = [ +pyyaml_env_tag = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, ] @@ -2373,23 +3116,41 @@ redis = [ {file = "redis-4.3.4-py3-none-any.whl", hash = "sha256:a52d5694c9eb4292770084fa8c863f79367ca19884b329ab574d5cb2036b3e54"}, {file = "redis-4.3.4.tar.gz", hash = "sha256:ddf27071df4adf3821c4f2ca59d67525c3a82e5f268bed97b813cb4fabf87880"}, ] +requests = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] rfc3986 = [ {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, ] -rich = [] +rich = [ + {file = "rich-12.5.1-py3-none-any.whl", hash = "sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb"}, + {file = "rich-12.5.1.tar.gz", hash = "sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca"}, +] +rsa = [ + {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, + {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, +] +setuptools = [ + {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"}, + {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -slotscheck = [] +slotscheck = [ + {file = "slotscheck-0.15.0-py3-none-any.whl", hash = "sha256:b8a9918483751409d62bd250b55da74f7273ca469b02ade5a6ab04c5e62d0355"}, + {file = "slotscheck-0.15.0.tar.gz", hash = "sha256:9d41639a4566133f8cfedf6eb27e88fb53eb8dcac7f7c1f4e4408dbb4b17950d"}, +] smmap = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, ] sniffio = [ - {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, - {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, + {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, + {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, ] sortedcontainers = [ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, @@ -2400,11 +3161,20 @@ starlette = [ {file = "starlette-0.20.4-py3-none-any.whl", hash = "sha256:c0414d5a56297d37f3db96a84034d61ce29889b9eaccf65eb98a0b39441fcaa3"}, {file = "starlette-0.20.4.tar.gz", hash = "sha256:42fcf3122f998fefce3e2c5ad7e5edbf0f02cf685d646a83a08d404726af5084"}, ] -starlite = [ - {file = "starlite-1.7.2-py3-none-any.whl", hash = "sha256:d2a8cf70b8346a4bbb65f4ab05d71f3317d98c2233ca97cfec57377c8487ddc3"}, - {file = "starlite-1.7.2.tar.gz", hash = "sha256:4af0140a37260386225250a2733effd6de7f3ff45b2ce3b6cd7f5528ba518a98"}, +starlite = [] +starlite-jwt = [] +starlite-multipart = [ + {file = "starlite-multipart-1.1.0.tar.gz", hash = "sha256:bd5b25a614fadc237fe4da60f0c43c5e7d045a523d4e3685237047e1e228da87"}, + {file = "starlite_multipart-1.1.0-py3-none-any.whl", hash = "sha256:c7b45545e70504b115f46a5046006a5bd41b1399cf829b9dede04af7a84b3981"}, +] +stevedore = [ + {file = "stevedore-4.0.0-py3-none-any.whl", hash = "sha256:87e4d27fe96d0d7e4fc24f0cbe3463baae4ec51e81d95fbe60d2474636e0c7d8"}, + {file = "stevedore-4.0.0.tar.gz", hash = "sha256:f82cc99a1ff552310d19c379827c2c64dd9f85a38bcd5559db2470161867b786"}, +] +tinycss2 = [ + {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, + {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, ] -stevedore = [] tokenize-rt = [ {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"}, {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"}, @@ -2417,39 +3187,57 @@ tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -tomlkit = [] +tomlkit = [ + {file = "tomlkit-0.11.4-py3-none-any.whl", hash = "sha256:25d4e2e446c453be6360c67ddfb88838cfc42026322770ba13d1fbd403a93a5c"}, + {file = "tomlkit-0.11.4.tar.gz", hash = "sha256:3235a9010fae54323e727c3ac06fb720752fe6635b3426e379daec60fbd44a83"}, +] tox = [ - {file = "tox-3.25.1-py2.py3-none-any.whl", hash = "sha256:c38e15f4733683a9cc0129fba078633e07eb0961f550a010ada879e95fb32632"}, - {file = "tox-3.25.1.tar.gz", hash = "sha256:c138327815f53bc6da4fe56baec5f25f00622ae69ef3fe4e1e385720e22486f9"}, + {file = "tox-3.26.0-py2.py3-none-any.whl", hash = "sha256:bf037662d7c740d15c9924ba23bb3e587df20598697bb985ac2b49bdc2d847f6"}, + {file = "tox-3.26.0.tar.gz", hash = "sha256:44f3c347c68c2c68799d7d44f1808f9d396fc8a1a500cbc624253375c7ae107e"}, ] typer = [ {file = "typer-0.6.1-py3-none-any.whl", hash = "sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e"}, {file = "typer-0.6.1.tar.gz", hash = "sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73"}, ] -types-freezegun = [] -types-pyyaml = [ +types-freezegun = [ + {file = "types-freezegun-1.1.10.tar.gz", hash = "sha256:cb3a2d2eee950eacbaac0673ab50499823365ceb8c655babb1544a41446409ec"}, + {file = "types_freezegun-1.1.10-py3-none-any.whl", hash = "sha256:fadebe72213e0674036153366205038e1f95c8ca96deb4ef9b71ddc15413543e"}, +] +types-passlib = [ + {file = "types-passlib-1.7.7.tar.gz", hash = "sha256:3a5f7e8cbe563ce71717a0fd92e25223c263418ffcaae61643b9bc1f701835cd"}, + {file = "types_passlib-1.7.7-py3-none-any.whl", hash = "sha256:49fae3bb06f444fd452df1b1cdb584d592cf4086f4ece38166aa47efc95cff5a"}, +] +types-python-jose = [ + {file = "types-python-jose-3.3.4.tar.gz", hash = "sha256:a8331dd72da5adf03853d4c003d08d0621dd9eb7b7333571b04d81058c55fac6"}, + {file = "types_python_jose-3.3.4-py3-none-any.whl", hash = "sha256:04fb427bc906e864e8c313db469920f71ffa85839b43fe355f7dc861330c6da3"}, +] +types-PyYAML = [ {file = "types-PyYAML-6.0.11.tar.gz", hash = "sha256:7f7da2fd11e9bc1e5e9eb3ea1be84f4849747017a59fc2eee0ea34ed1147c2e0"}, {file = "types_PyYAML-6.0.11-py3-none-any.whl", hash = "sha256:8f890028123607379c63550179ddaec4517dc751f4c527a52bb61934bf495989"}, ] types-redis = [ - {file = "types-redis-4.3.12.tar.gz", hash = "sha256:d015eb6b6e10378dfc4fdf0be6aa48649eaa03a8a2aa4bb19ee4dfcef78d58c6"}, - {file = "types_redis-4.3.12-py3-none-any.whl", hash = "sha256:1f592a503cf11a51c73c1c807af040e0ccb988bb2577d11b18549cb32e86908d"}, + {file = "types-redis-4.3.20.tar.gz", hash = "sha256:74ed02945470ddea2dd21447c185dabb3169e5a5328d26b25cf3547d949b8e04"}, + {file = "types_redis-4.3.20-py3-none-any.whl", hash = "sha256:b22e0f5a18b98b6a197dd403daed52a22cb76f50e3cbd7ddc539196af52ec23e"}, ] types-requests = [ - {file = "types-requests-2.28.6.tar.gz", hash = "sha256:cf3383bbd79394bf051a0a9202d6831fa962f186f923c178f7c059e3424bd00e"}, - {file = "types_requests-2.28.6-py3-none-any.whl", hash = "sha256:d8d7607419cd4b41a7b9497e15e8c0bad78d50df43c48ad25bc526a11518c3a9"}, + {file = "types-requests-2.28.10.tar.gz", hash = "sha256:97d8f40aa1ffe1e58c3726c77d63c182daea9a72d9f1fa2cafdea756b2a19f2c"}, + {file = "types_requests-2.28.10-py3-none-any.whl", hash = "sha256:45b485725ed58752f2b23461252f1c1ad9205b884a1e35f786bb295525a3e16a"}, ] types-urllib3 = [ - {file = "types-urllib3-1.26.19.tar.gz", hash = "sha256:45b307bdb73d2eac0c2fb1386da97e51c9ae7f1474ef35f61024c3084b6bf371"}, - {file = "types_urllib3-1.26.19-py3-none-any.whl", hash = "sha256:540bf5a42ba09a4a58c406cb2c2c8654b0aadf413f8337fdc184711ab48b900c"}, + {file = "types-urllib3-1.26.24.tar.gz", hash = "sha256:a1b3aaea7dda3eb1b51699ee723aadd235488e4dc4648e030f09bc429ecff42f"}, + {file = "types_urllib3-1.26.24-py3-none-any.whl", hash = "sha256:cf7918503d02d3576e503bbfb419b0e047c4617653bba09624756ab7175e15c9"}, ] typing-extensions = [ {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] +urllib3 = [ + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, +] uvicorn = [ - {file = "uvicorn-0.18.2-py3-none-any.whl", hash = "sha256:c19a057deb1c5bb060946e2e5c262fc01590c6529c0af2c3d9ce941e89bc30e0"}, - {file = "uvicorn-0.18.2.tar.gz", hash = "sha256:cade07c403c397f9fe275492a48c1b869efd175d5d8a692df649e6e7e2ed8f4e"}, + {file = "uvicorn-0.18.3-py3-none-any.whl", hash = "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af"}, + {file = "uvicorn-0.18.3.tar.gz", hash = "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b"}, ] uvloop = [ {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"}, @@ -2470,8 +3258,8 @@ uvloop = [ {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, ] virtualenv = [ - {file = "virtualenv-20.16.2-py2.py3-none-any.whl", hash = "sha256:635b272a8e2f77cb051946f46c60a54ace3cb5e25568228bd6b57fc70eca9ff3"}, - {file = "virtualenv-20.16.2.tar.gz", hash = "sha256:0ef5be6d07181946891f5abc8047fda8bc2f0b4b9bf222c64e6e8963baee76db"}, + {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, + {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, ] watchdog = [ {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, @@ -2501,24 +3289,28 @@ watchdog = [ {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, ] watchfiles = [ - {file = "watchfiles-0.16.1-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:1e41c8b4bf3e07c18aa51775b36b718830fa727929529a7d6e5b38cf845a06b4"}, - {file = "watchfiles-0.16.1-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:b2c7ad91a867dd688b9a12097dd6a4f89397b43fccee871152aa67197cc94398"}, - {file = "watchfiles-0.16.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:75a4b9cec1b1c337ea77d4428b29861553d6bf8179923b1bc7e825e217460e2c"}, - {file = "watchfiles-0.16.1-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a3debb19912072799d7ca53e99fc5f090f77948f5601392623b2a416b4c86be"}, - {file = "watchfiles-0.16.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35f3e411822e14a35f2ef656535aad4e6e79670d6b6ef8e53db958e28916b1fe"}, - {file = "watchfiles-0.16.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9a7a6dc63684ff5ba11f0be0e64f744112c3c7a0baf4ec8f6794f9a6257d21e"}, - {file = "watchfiles-0.16.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e939a2693404ac11e055f9d1237db8ad7635e2185a6143bde00116e691ea2983"}, - {file = "watchfiles-0.16.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cd7d2fd9a8f28066edc8db5278f3632eb94d10596af760fa0601631f32b1a41e"}, - {file = "watchfiles-0.16.1-cp37-abi3-win32.whl", hash = "sha256:f91035a273001390093a09e52274a34695b0d15ee8736183b640bbc3b8a432ab"}, - {file = "watchfiles-0.16.1-cp37-abi3-win_amd64.whl", hash = "sha256:a8a1809bf910672aa0b7ed6e6045d4fc2cf1e0718b99bc443ef17faa5697b68a"}, - {file = "watchfiles-0.16.1-cp37-abi3-win_arm64.whl", hash = "sha256:baa6d0c1c5140e1dcf6ff802dd7b09fcd95b358e50d42fabc83d83f719451c54"}, - {file = "watchfiles-0.16.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:5741246ae399a03395aa5ee35480083a4f29d58ffd41dd3395594f8805f8cdbc"}, - {file = "watchfiles-0.16.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44c6aff58b8a70a26431737e483a54e8e224279b21873388571ed184fe7c91a7"}, - {file = "watchfiles-0.16.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d1b2d0cf060e5222a930a3e2f40f6577da1d18c085c32741b98a128dc1e72c"}, - {file = "watchfiles-0.16.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:70159e759f52b65a50c498182dece80364bfd721e839c254c328cbc7a1716616"}, - {file = "watchfiles-0.16.1-pp39-pypy39_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22af3b915f928ef59d427d7228668f87ac8054ed8200808c73fbcaa4f82d5572"}, - {file = "watchfiles-0.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a6a1ac96edf5bc3f8e36f4462fc1daad0ec3769ff2adb920571e120e37c91c5"}, - {file = "watchfiles-0.16.1.tar.gz", hash = "sha256:aed7575e24434c8fec2f2bbb0cecb1521ea1240234d9108db7915a3424d92394"}, + {file = "watchfiles-0.17.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:c7e1ffbd03cbcb46d1b7833e10e7d6b678ab083b4e4b80db06cfff5baca3c93f"}, + {file = "watchfiles-0.17.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:539bcdb55a487126776c9d8c011094214d1df3f9a2321a6c0b1583197309405a"}, + {file = "watchfiles-0.17.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:00e5f307a58752ec1478eeb738863544bde21cc7a2728bd1c216060406bde9c1"}, + {file = "watchfiles-0.17.0-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:92675f379a9d5adbc6a52179f3e39aa56944c6eecb80384608fff2ed2619103a"}, + {file = "watchfiles-0.17.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dd1e3181ad5d83ca35e9147c72e24f39437fcdf570c9cdc532016399fb62957"}, + {file = "watchfiles-0.17.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:204950f1d6083539af5c8b7d4f5f8039c3ce36fa692da12d9743448f3199cb15"}, + {file = "watchfiles-0.17.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:4056398d8f6d4972fe0918707b59d4cb84470c91d3c37f0e11e5a66c2a598760"}, + {file = "watchfiles-0.17.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ffff3418dc753a2aed2d00200a4daeaac295c40458f8012836a65555f288be8b"}, + {file = "watchfiles-0.17.0-cp37-abi3-win32.whl", hash = "sha256:b5c334cd3bc88aa4a8a1e08ec9f702b63c947211275defdc2dd79dc037fcb500"}, + {file = "watchfiles-0.17.0-cp37-abi3-win_amd64.whl", hash = "sha256:53a2faeb121bc51bb6b960984f46901227e2e2475acc5a8d4c905a600436752d"}, + {file = "watchfiles-0.17.0-cp37-abi3-win_arm64.whl", hash = "sha256:58dc3140dcf02a8aa76464a77a093016f10e89306fec21a4814922a64f3e8b9f"}, + {file = "watchfiles-0.17.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:adcf15ecc2182ea9d2358c1a8c2b53203c3909484918776929b7bbe205522c0e"}, + {file = "watchfiles-0.17.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:afd35a1bd3b9e68efe384ae7538481ae725597feb66f56f4bd23ecdbda726da0"}, + {file = "watchfiles-0.17.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad2bdcae4c0f07ca6c090f5a2c30188cc6edba011b45e7c96eb1896648092367"}, + {file = "watchfiles-0.17.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:a53cb6c06e5c1f216c792fbb432ce315239d432cb8b68d508547100939ec0399"}, + {file = "watchfiles-0.17.0-pp39-pypy39_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6a3d6c699f3ce238dfa90bcef501f331a69b0d9b076f14459ed8eab26ba2f4cf"}, + {file = "watchfiles-0.17.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f4271af86569bdbf131dd5c7c121c45d0ed194f3c88b88326e48a3b6a2db12"}, + {file = "watchfiles-0.17.0.tar.gz", hash = "sha256:ae7c57ef920589a40270d5ef3216d693f4e6f8864d8fc8b6cb7885ca98ad2a61"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] websockets = [ {file = "websockets-10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978"}, @@ -2639,4 +3431,7 @@ wrapt = [ xeger = [ {file = "xeger-0.3.5.tar.gz", hash = "sha256:2a91341fc2c814b27917b8bd24e8d212c8a3b904d98e9a6703d27484c2cb0f82"}, ] -zipp = [] +zipp = [ + {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, + {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, +] diff --git a/pyproject.toml b/pyproject.toml index ee3e7a86..5a507741 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.poetry] -name = "starlite-spa" +name = "pyspa" version = "0.1.0" description = "Opinionated template for integrating Starlite with a SPA" authors = ["Cody Fincher "] @@ -8,8 +8,8 @@ license = "MIT" readme = "README.md" homepage = "https://github.com/cofin/pyspa" repository = "https://github.com/cofin/pyspa" -documentation = "https://starlite-api.github.io/starlite-spa" -keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "ssr"] +documentation = "https://cofin.github.io/pyspa" +keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "spa"] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", @@ -31,74 +31,96 @@ packages = [ { include = "pyspa", from = "src" }, ] [tool.poetry.scripts] -pyspa = "pyspa:main" +pyspa = "pyspa.__main__:main" pg-ready = "pyspa.utils.postgres_ready:main" redis-ready = "pyspa.utils.redis_ready:main" [tool.poetry.dependencies] python = ">=3.10,<4.0" -starlite = { extras = ["brotli"], version = "*" } +starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} pydantic = {extras = ["dotenv","email"], version = "*"} +passlib = {version = "*", extras = ["argon2"]} +httpx = "*" typer = "*" -gunicorn = "*" uvicorn = {extras = ["standard"], version = "*"} -sqlalchemy = { git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main"} +sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["asyncio"]} +starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = ["brotli", "picologging"]} alembic = "*" +asyncpg = "*" redis = "*" hiredis = "*" -asyncpg = "*" rich = "*" -picologging = "*" -httpx = "*" -[tool.poetry.dev-dependencies] -hypothesis = { extras = ["cli"], version = "*" } -mkdocs-material = "*" -uvicorn = "*" -sqlalchemy = { git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["mypy"] } -coverage = {extras = ["toml"], version = "*"} -mypy = "*" -pre-commit = "*" -pylint = "*" -pytest = "*" -pytest-asyncio = "*" -pytest-cov = "*" -pytest-dotenv = "*" -types-redis = "*" -types-pyyaml = "*" -types-requests = "*" +[tool.poetry.group.dev.dependencies] +Jinja2 = "*" +autoflake = "*" +bandit = "*" +blacken-docs = "*" bump2version = "*" +coverage = {extras = ["toml"], version = "*"} +cython = "*" flake8 = "*" -flake8-type-checking = "*" -pyupgrade = "*" -blacken-docs ="*" -bandit = "*" flake8-bugbear = "*" flake8-comprehensions = "*" flake8-mutable = "*" flake8-print = "*" flake8-simplify = "*" -slotscheck = "*" -types-freezegun = "*" -Jinja2 = "*" +flake8-type-checking = "*" freezegun = "*" -pytest-mock = "*" -tox = "*" +hypothesis = {extras = ["cli"], version = "*"} +isort = "*" mkdocs = "*" +mkdocs-material = "*" mkdocstrings = "*" mkdocstrings-python = "*" +mypy = "*" +pre-commit = "*" +pylint = "*" +pytest = "*" +pytest-asyncio = "*" +pytest-cov = "*" +pytest-dotenv = "*" +pytest-mock = "*" +pyupgrade = "*" +slotscheck = "*" +tox = "*" +types-freezegun = "*" +types-passlib = "*" +types-python-jose = "*" +types-pyyaml = "*" +types-redis = "*" +types-requests = "*" [build-system] -requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" +requires = ["poetry-core", "setuptools", "wheel", "cython"] [tool.black] -line-length = 88 +exclude = ''' +/( + \.git + | \.mypy_cache + | \.tox + | venv + | \.venv + | _build + | buck-out + | build + | dist +)/ +''' include = '\.pyi?$' +line-length = 120 +[tool.autoflake] +check = true [tool.isort] -profile = "black" +line_length = 119 multi_line_output = 3 +profile = "black" +skip_gitignore = true +src_paths = ["src", "test"] + [tool.coverage.run] @@ -109,8 +131,11 @@ exclude_lines = [ 'pragma: no cover', 'if TYPE_CHECKING:', 'except ImportError as e:', - '\.\.\.' + '\.\.\.', + "if __name__ == '__main__':", ] [tool.pytest.ini_options] +addopts = "--cov=src -v --doctest-modules --doctest-glob=*.md --ignore=migrations" asyncio_mode = "auto" +env_files = [".env.example"] diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 00000000..5c2c56f2 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,8 @@ +sonar.projectKey=starlite-api_starlite-pg-redis-docker +sonar.organization=starlite-api +sonar.python.coverage.reportPaths=coverage.xml +sonar.test.inclusions=tests/**/*.py +sonar.sources=src +sonar.sourceEncoding=UTF-8 +sonar.cpd.exclusions=src/pyspa/db/migrations/**/*, src/pyspa/config/gunicorn.py, utils/**/* +sonar.python.version=3.10 diff --git a/src/pyspa/__init__.py b/src/pyspa/__init__.py index bd4de6dd..102aa303 100644 --- a/src/pyspa/__init__.py +++ b/src/pyspa/__init__.py @@ -1,10 +1,22 @@ -import logging +import picologging as logging -from pyspa import cli, config -from pyspa.__main__ import main -from pyspa.__version__ import __version__ +from pyspa import asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web +from pyspa.version import __version__ logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) -__all__ = ["__version__", "cli", "config", "main"] +__all__ = [ + "__version__", + "config", + "web", + "core", + "utils", + "cli", + "asgi", + "db", + "schemas", + "repositories", + "middleware", + "models", +] diff --git a/src/pyspa/__main__.py b/src/pyspa/__main__.py index 8a50862f..8736c494 100644 --- a/src/pyspa/__main__.py +++ b/src/pyspa/__main__.py @@ -1,17 +1,19 @@ import sys +from pathlib import Path def main() -> None: + current_path = Path(__file__).parent.resolve() + sys.path.append(str(current_path)) try: from pyspa.cli import cli + from pyspa.config import log_config + + log_config.configure() except ImportError: print( # noqa: T201 - "💣 [bold red] Could not load required libraries. ", - "Please check your installation", + "💣 Could not load required libraries. ", + "Please check your installation and make sure you activated any necessary virtual environment", ) sys.exit(1) cli() - - -if __name__ == "__main__": - main() diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py new file mode 100644 index 00000000..ee8fb4e9 --- /dev/null +++ b/src/pyspa/asgi.py @@ -0,0 +1,66 @@ +from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR +from starlite import Provide, Starlite + +from pyspa import db, middleware, web +from pyspa.config import log_config, settings +from pyspa.core import cache, client, compression, cors, csrf, exceptions, openapi, security, static_files + +__all__ = ["app", "run_server"] + + +app = Starlite( + debug=settings.app.DEBUG, + exception_handlers={HTTP_500_INTERNAL_SERVER_ERROR: exceptions.logging_exception_handler}, + on_shutdown=[db.on_shutdown, client.on_shutdown, cache.on_shutdown], + on_startup=[log_config.configure], + openapi_config=openapi.config, + compression_config=compression.config, + cors_config=cors.config, + csrf_config=csrf.config, + route_handlers=[web.router], + cache_config=cache.config, + middleware=[security.oauth2_authentication.middleware, middleware.DatabaseSessionMiddleware], + dependencies={"db": Provide(db.db_session)}, + static_files_config=static_files.config, +) + + +"""Application Web Server Gateway Interface - gunicorn.""" + + +def run_server( + host: str, + port: int, + http_workers: int, + reload: bool, + log_level: str, + asgi_app: str, + lifespan: str = "auto", + access_log: bool = True, +) -> None: + """Launches an ASGI application with Uvicorn + + Args: + host (str): _description_ + port (int): _description_ + http_workers (int): _description_ + reload (bool): _description_ + log_level (str): _description_ + asgi_app (str): _description_ + lifespan (str, optional): _description_. Defaults to "auto". + access_log (bool, optional): _description_. Defaults to True. + """ + import uvicorn # pylint: disable=[import-outside-toplevel] + + uvicorn.run( + asgi_app=asgi_app, + host=host, + port=port, + log_level=log_level, + log_config=None, + reload=reload, + lifespan=lifespan, + access_log=access_log, + workers=http_workers, + reload_excludes=[".git", ".venv", "*.pyc"], + ) diff --git a/src/pyspa/cli/main.py b/src/pyspa/cli/app.py similarity index 55% rename from src/pyspa/cli/main.py rename to src/pyspa/cli/app.py index 8eea5f03..1e590f53 100644 --- a/src/pyspa/cli/main.py +++ b/src/pyspa/cli/app.py @@ -1,6 +1,6 @@ import typer -from pyspa.cli.commands import manage_cli, run_cli +from pyspa.cli import commands cli = typer.Typer( name="Simple Single Page Application", @@ -11,6 +11,13 @@ pretty_exceptions_short=True, add_completion=False, ) - -cli.add_typer(run_cli, name="run") -cli.add_typer(manage_cli, name="manage") +cli.add_typer( + commands.run.cli, + name="run", + help="Launch Starlite PySPA", +) +cli.add_typer( + commands.manage.cli, + name="manage", + help="Configure Starlite PySPA", +) diff --git a/src/pyspa/cli/commands/__init__.py b/src/pyspa/cli/commands/__init__.py index 2112e616..c5dcb130 100644 --- a/src/pyspa/cli/commands/__init__.py +++ b/src/pyspa/cli/commands/__init__.py @@ -1,4 +1,3 @@ -from .manage import cli as manage_cli -from .run import cli as run_cli +from pyspa.cli.commands import manage, run -__all__ = ["manage_cli", "run_cli"] +__all__ = ["manage", "run"] diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index 8f6b3b08..c802b176 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -1,9 +1,21 @@ +import binascii +import logging +import os +import sys + import typer +from alembic import command as migration_command +from alembic.config import Config as AlembicConfig +from rich.prompt import Confirm +from sqlalchemy import Table +from sqlalchemy.schema import DropTable +from pyspa import utils +from pyspa.asgi import app from pyspa.cli.console import console -from pyspa.config.logging import get_logger - -logger = get_logger("pyspa") +from pyspa.config import settings +from pyspa.db import engine +from pyspa.models import BaseModel, meta cli = typer.Typer( no_args_is_help=True, @@ -14,21 +26,124 @@ add_completion=False, ) +logger = logging.getLogger() -@cli.command() -def pull_secret(secret_name: str) -> None: - """Pull Secrets from Secrets Provider""" - console.print("[bold green]...Gathering data") - logger.info("[bold red]...Gathering data") +@cli.command(name="generate-random-key") +def generate_random_key(length: int = 32) -> None: + """Helper for admins to generate random 26 character string. -@cli.command() -def push_secret(secret_name: str) -> None: - """Pull Secrets from Secrets Provider""" - console.print("[bold green]...Gathering data") + Used as the secret key for sessions. + Must be consistent (and secret) per environment. + Output: b'random2323db3....1xyz' + Copy the value in between the quotation marks to the settings file + """ + console.print(binascii.hexlify(os.urandom(length))) -@cli.command() -def bundle_scripts() -> None: +@cli.command( + name="export-openapi-schema", +) +def export_api_schema( + export_location: str = "domain/web/spec/openapi.json", +) -> None: """Push secrets to Secrets Provider""" - console.print("[bold blue]...exporting shell scripts") + + console.print("Exporting API Schema") + application = app + schema = application.openapi_schema + if schema: + with open(export_location, "w", encoding="utf-8") as fd: + fd.write(utils.serializers.serialize_object(application.openapi_schema)) + console.print_json(schema.json()) + + +@cli.command( + name="create-database", + help="Creates an empty postgres database and executes migrations", +) +def create_database() -> None: + """Create database DDL migrations.""" + alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) + alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) + migration_command.upgrade(alembic_cfg, "head") + + +@cli.command( + name="upgrade-database", + help="Executes migrations to apply any outstanding database structures.", +) +def upgrade_database() -> None: + """Upgrade the database to the latest revision.""" + alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) + alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) + migration_command.upgrade(alembic_cfg, "head") + + +@cli.command( + name="reset-database", + help="Executes migrations to apply any outstanding database structures.", +) +def reset_database( + no_prompt: bool = typer.Option(False, "--no-prompt", help="Do not prompt for confirmation"), +) -> None: + """Resets the database to an initial empty state.""" + if not no_prompt: + typer.confirm("[bold red] Are you sure you want to drop and recreate all tables?") + alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) + alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) + + utils.asyncer.run(drop_tables)() + + console.log("Recreating the db") + migration_command.upgrade(alembic_cfg, "head") + + +@cli.command( + name="purge-database", + help="Drops all tables.", +) +def purge_database( + no_prompt: bool = typer.Option(False, "--no-prompt", help="Do not prompt for confirmation"), +) -> None: + """Drop all objects in the database.""" + if not no_prompt: + confirm = Confirm.ask( + "[bold red] Are you sure you want to drop everything?", + ) + if not confirm: + console.print("Aborting database purge and exiting.") + sys.exit(0) + alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) + alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) + + utils.asyncer.run(drop_tables)() + + +@cli.command( + name="show-current-database-revision", + help="Shows the current revision for the database.", +) +def show_database_revision() -> None: + """Starts the Gluent Console API.""" + alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) + alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) + migration_command.current(alembic_cfg, verbose=False) + + +async def drop_tables() -> None: + logger.info("Connecting to database backend.") + + async with engine.begin() as db: + logger.info("[bold red] Dropping the db") + BaseModel.metadata.drop_all() + logger.info("[bold red] Truncating the version table") + + await db.execute( + DropTable( + element=Table("ddl_version", meta), + if_exists=True, + ) + ) + await db.commit() + logger.info("Successfully dropped all objects") diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index 74a1dcb8..a896b0d9 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -1,9 +1,9 @@ import typer +from pyspa.asgi import run_server from pyspa.cli.console import console from pyspa.config import settings -from pyspa.config.logging import get_logger -from pyspa.core.wsgi import run_wsgi +from pyspa.config.logging import log_config cli = typer.Typer( no_args_is_help=True, @@ -14,31 +14,41 @@ add_completion=False, ) -logger = get_logger("root") - -@cli.command(name="server") -def run_server( +@cli.command() +def api( host: str = typer.Option( - settings.gunicorn.HOST, + settings.server.HOST, + "--host", + "-h", help="Host interface to listen on. Use 0.0.0.0 for all available interfaces.", ), - port: int = typer.Option(settings.gunicorn.PORT, help="Port to listen on."), + port: int = typer.Option(settings.server.PORT, "--port", "-p", help="Port to listen on."), workers: int = typer.Option( - settings.gunicorn.WORKERS, - help="Number of HTTP workers to run. This should equal the number of CPUs available.", + settings.server.WORKERS, + "--workers", + "-w", + help="Number of HTTP workers to run.", + ), + reload: bool = typer.Option( + False, + "--reload", + "-r", + help="Reload the application on code changes", ), ) -> None: - """Run the server""" - settings.gunicorn.HOST = host - settings.gunicorn.PORT = port - settings.gunicorn.WORKERS = workers - console.print("[bold green]...Gathering data") - run_wsgi(host, port, workers, reload=settings.gunicorn.RELOAD) - - -@cli.command(name="worker") -def run_worker() -> None: - """Run the worker""" - console.print("[bold green]...Gathering data") - logger.info("Running worker") + """Run the API server.""" + log_config.configure() + console.print("[bold blue]Launching API Server with Uvicorn") + settings.server.HOST = host + settings.server.PORT = port + settings.server.WORKERS = workers + settings.server.RELOAD = reload + run_server( + host=settings.server.HOST, + port=settings.server.PORT, + http_workers=settings.server.WORKERS, + reload=settings.server.RELOAD, + log_level=settings.server.LOG_LEVEL, + asgi_app=settings.server.ASGI_APP, + ) diff --git a/src/pyspa/cli/console.py b/src/pyspa/cli/console.py index a9463afd..a6f1a6c8 100644 --- a/src/pyspa/cli/console.py +++ b/src/pyspa/cli/console.py @@ -1,3 +1,5 @@ from rich.console import Console -console = Console() +__all__ = ["console"] + +console = Console(markup=True) diff --git a/src/pyspa/config/__init__.py b/src/pyspa/config/__init__.py index eeddae8c..dadaa2de 100644 --- a/src/pyspa/config/__init__.py +++ b/src/pyspa/config/__init__.py @@ -1,4 +1,5 @@ -from pyspa.config import logging +from pyspa.config import paths from pyspa.config.application import settings +from pyspa.config.logging import log_config -__all__ = ["settings", "logging"] +__all__ = ["settings", "log_config", "paths"] diff --git a/src/pyspa/config/alembic.ini b/src/pyspa/config/alembic.ini new file mode 100644 index 00000000..f39d1fdc --- /dev/null +++ b/src/pyspa/config/alembic.ini @@ -0,0 +1,76 @@ +# A generic, single database configuration. + +[alembic] +prepend_sys_path = src:. +# path to migration scripts +script_location = src/pyspa/db/migrations + +# template used to generate migration files +file_template = %%(year)d-%%(month).2d-%%(day).2d_%%(rev)s + +# timezone to use when rendering the date +# within the migration file as well as the filename. +# string value is passed to dateutil.tz.gettz() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the +# "slug" field +#truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; this defaults +# to alembic/versions. When using multiple version +# directories, initial revisions must be specified with --version-path +# version_locations = %(here)s/bar %(here)s/bat alembic/versions + +# the output encoding used when revision files +# are written from script.py.mako +output_encoding = utf-8 + +# format using black +hooks = black +black.type = console_scripts +black.entrypoint = black +black.options = -l 120 REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = pyspa.utils.log.extensions.RichPicologgingHandler +kwargs = {"rich_tracebacks": True, "markup": True, "omit_repeated_times": False} +formatter = generic + +[formatter_generic] +format = %(message)s diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index e273d0d3..b9c81153 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -1,116 +1,244 @@ -import datetime +""" +All configuration is via environment variables. + +Take not of the environment variable prefixes required for each settings class, except +[`AppSettings`][starlite_lib.config.AppSettings]. +""" +import sys +from datetime import datetime from enum import Enum, EnumMeta from functools import lru_cache +from typing import List, Literal, Union -from pydantic import AnyUrl +import picologging as logging +from pydantic import AnyHttpUrl from pydantic import BaseSettings as _BaseSettings -from pydantic import PostgresDsn, SecretBytes, SecretStr +from pydantic import SecretBytes, SecretStr, ValidationError, validator -from pyspa.__version__ import __version__ +from pyspa import utils +from pyspa.config.paths import BASE_DIR +from pyspa.version import __version__ +__all__ = [ + "BASE_DIR", + "BaseSettings", + "EnvironmentSettings", + "Settings", + "settings", +] -def encode_datetime_object(dt: datetime.datetime) -> str: - """Handles datetime serialization for nested timestamps in models/dataclasses""" - return dt.replace(tzinfo=datetime.timezone.utc).isoformat().replace("+00:00", "Z") +logger = logging.getLogger() class BaseSettings(_BaseSettings): + """Base Settings""" + class Config: + """Base Settings Config""" + + json_loads = utils.serializers.deserialize_object + json_dumps = utils.serializers.serialize_object case_sensitive = True json_encoders = { - datetime.datetime: encode_datetime_object, + datetime: utils.serializers.convert_datetime_to_gmt, SecretStr: lambda secret: secret.get_secret_value() if secret else None, SecretBytes: lambda secret: secret.get_secret_value() if secret else None, Enum: lambda enum: enum.value if enum else None, EnumMeta: None, } validate_assignment = True - case_sensitive = False orm_mode = True use_enum_values = True + + +class EnvironmentSettings(BaseSettings): + """Settings That can be controlled with environment variables""" + + class Config: + """Environment Settings Config""" + env_file = ".env" env_file_encoding = "utf-8" -class ApplicationSettings(BaseSettings): +class AppSettings(EnvironmentSettings): class Config: - env_prefix = "PYSPA_" + case_sensitive = True - BUILD_NUMBER: str = str(__version__) + NAME: str = "optimus-prime" + SECRET_KEY: SecretStr + BUILD_NUMBER: str = __version__ DEBUG: bool = False DEFAULT_PAGINATION_LIMIT: int = 10 ENVIRONMENT: str = "production" LOG_LEVEL: str = "INFO" DEV_MODE: bool = False - NAME: str = "pyspa" + JWT_ENCRYPTION_ALGORITHM: str = "HS256" + USER_REGISTRATION_ENABLED: bool = True + REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 24 # 1 day expiration + REFRESH_TOKEN_COOKIE_NAME: str = "pyspa-refresh-token" + ACCESS_TOKEN_EXPIRE_MINUTES: int = 5 + ACCESS_TOKEN_COOKIE_NAME: str = "pyspa-access-token" + EMAIL_RESET_TOKEN_EXPIRE_HOURS: int = 24 + INVITE_TOKEN_EXPIRE_HOURS: int = 24 + USER_VERIFICATION_TOKEN_EXPIRE_HOURS: int = 24 + BACKEND_CORS_ORIGINS: list[AnyHttpUrl] = [] + CSRF_COOKIE_NAME: str = "pyspa-csrf-token" + CSRF_COOKIE_SECURE: bool = True + + @property + def slug(self) -> str: + """ + A slugified name. + + Returns + ------- + str + `self.NAME`, all lowercase and hyphens instead of spaces. + """ + return utils.text.slugify(self.NAME) + + @validator("BACKEND_CORS_ORIGINS", pre=True) + def assemble_cors_origins( + cls, + value: Union[str, list[str]], + ) -> Union[list[str], str]: + """Parses a list of origins""" + + if isinstance(value, List): + return value + if isinstance(value, str) and not value.startswith("["): + return [host.strip() for host in value.split(",")] + elif isinstance(value, str) and value.startswith("[") and value.endswith("]"): + return list(value) + raise ValueError(value) + + +# noinspection PyUnresolvedReferences +class OpenAPISettings(BaseSettings): + """ + Configures OpenAPI for the application. + + Prefix all environment variables with `OPENAPI_`, e.g., `OPENAPI_TITLE`. + + Attributes + ---------- + TITLE : str + OpenAPI document title. + VERSION : str + OpenAPI document version. + CONTACT_NAME : str + OpenAPI document contact name. + CONTACT_EMAIL : str + OpenAPI document contact email. + """ + TITLE: str | None + VERSION: str = "v1" + CONTACT_NAME: str = "Admin" + CONTACT_EMAIL: str = "admin@localhost" -class CacheSettings(BaseSettings): - class Config: - env_prefix = "PYSPA_REDIS_" - EXPIRATION: int = 60 # 60 seconds - URL: AnyUrl +# noinspection PyUnresolvedReferences +class DatabaseSettings(EnvironmentSettings): + """ + Configures the database for the application. + Prefix all environment variables with `DB_`, e.g., `DB_URL`. -class DatabaseSettings(BaseSettings): - """Database Configuration""" + Attributes + ---------- + ECHO : bool + Enables SQLAlchemy engine logs. + URL : PostgresDsn + URL for database connection. + """ class Config: - env_prefix = "PYSPA_POSTGRES_" + env_prefix = "DB_" + case_sensitive = True ECHO: bool = False - URL: PostgresDsn + ECHO_POOL: bool | Literal["debug"] = False + POOL_DISABLE: bool = False + POOL_MAX_OVERFLOW: int = 20 + POOL_SIZE: int = 10 + POOL_TIMEOUT: int = 30 + POOL_RECYCLE: int = 300 + POOL_PRE_PING: bool = True + URL: str + MIGRATION_CONFIG: str = f"{BASE_DIR}/config/alembic.ini" + MIGRATION_PATH: str = f"{BASE_DIR}/core/migrations" + + +# noinspection PyUnresolvedReferences +class CacheSettings(EnvironmentSettings): + """ + Cache settings for the application. + Prefix all environment variables with `CACHE_`, e.g., `CACHE_URL`. -class GunicornSettings(BaseSettings): - """Gunicorn settings""" + Attributes + ---------- + URL : AnyUrl + A redis connection URL. + """ class Config: - env_prefix = "PYSPA_GUNICORN_" + env_prefix = "CACHE_" + case_sensitive = True - ACCESS_LOG: str - ERROR_LOG: str - HOST: str = "0.0.0.0" - KEEPALIVE: int = 120 - LOG_LEVEL: str = "INFO" - PORT: int = 8080 - RELOAD: bool = False - THREADS: int - TIMEOUT: int = 120 - WORKERS: int - WORKER_CLASS: str - PRELOAD: bool = True + URL: str + EXPIRATION: int = 60 -# Constants -class ApiPaths: - HEALTH = "/health" +class ServerSettings(EnvironmentSettings): + """Uvicorn Specific Configuration""" + class Config: + env_prefix = "SERVER_" -class Settings(BaseSettings): - """Main Setting Class""" + ASGI_APP: str = "pyspa.asgi:app" + HOST: str = "0.0.0.0" # nosec + PORT: int = 8000 + WORKERS: int = 1 + RELOAD: bool = False + LOG_LEVEL: str = "error" - app: ApplicationSettings = ApplicationSettings() - db: DatabaseSettings = DatabaseSettings() - cache: CacheSettings = CacheSettings() - gunicorn: GunicornSettings = GunicornSettings() - api_paths: ApiPaths = ApiPaths() +class Settings(BaseSettings): + """ + Settings -@lru_cache(maxsize=1) -def get_app_settings() -> Settings: + All settings are nested here """ - Cache app settings - This function returns a configured instance of settings. + app: AppSettings + cache: CacheSettings + db: DatabaseSettings + openapi: OpenAPISettings + server: ServerSettings + - LRU Cache decorator has been used to limit the number of instances to 1. - This effectively turns this into a singleton class. +@lru_cache() +def get_settings(env: str = "production") -> "Settings": + """Load Settings file - Maybe there are better approaches for this? + Returns: + Settings: _description_ """ - return Settings() + try: + app: AppSettings = AppSettings() + cache: CacheSettings = CacheSettings() + db: DatabaseSettings = DatabaseSettings() + openapi: OpenAPISettings = OpenAPISettings() + server: ServerSettings = ServerSettings() + + settings = Settings(app=app, cache=cache, db=db, openapi=openapi, server=server) + except ValidationError as e: + logger.fatal(f"Could not load settings. {e}") + sys.exit(1) + return settings -settings = get_app_settings() +settings = get_settings() diff --git a/src/pyspa/config/gunicorn.py b/src/pyspa/config/gunicorn.py deleted file mode 100644 index 053235eb..00000000 --- a/src/pyspa/config/gunicorn.py +++ /dev/null @@ -1,15 +0,0 @@ -from pyspa.config.application import settings -from pyspa.config.logging import log_config - -# Gunicorn config variables -accesslog = settings.gunicorn.ACCESS_LOG -bind = f"{settings.gunicorn.HOST}:{settings.gunicorn.PORT}" -errorlog = settings.gunicorn.ERROR_LOG -keepalive = settings.gunicorn.KEEPALIVE -logconfig_dict = log_config.dict(exclude_none=True) -loglevel = settings.gunicorn.LOG_LEVEL -reload = settings.gunicorn.RELOAD -threads = settings.gunicorn.THREADS -timeout = settings.gunicorn.TIMEOUT -worker_class = settings.gunicorn.WORKER_CLASS -workers = settings.gunicorn.WORKERS diff --git a/src/pyspa/config/logging.py b/src/pyspa/config/logging.py index 69ef381b..41fc0d8d 100644 --- a/src/pyspa/config/logging.py +++ b/src/pyspa/config/logging.py @@ -1,119 +1,20 @@ -# Standard Library - -import logging.config -import re -from functools import lru_cache -from logging import Filter as LoggingFilter -from queue import Queue -from typing import TYPE_CHECKING, Any, Final, Generic, List, TypeVar - -import picologging -from gunicorn.glogging import Logger as GunicornLogger -from picologging import LogRecord -from picologging.handlers import QueueHandler, QueueListener -from rich.console import Console -from rich.logging import RichHandler as _RichHandler -from starlette.status import HTTP_200_OK -from starlite import LoggingConfig - -from pyspa.config.application import ApiPaths, settings - -DEFAULT_LOG_NAME: Final = "pyspa" - - -class RichHandler(_RichHandler): - """Rich Handler Config""" - - def __init__(self, *args, **kwargs) -> None: # type: ignore - super().__init__( - rich_tracebacks=settings.app.LOG_LEVEL.lower() == "debug", - console=Console(markup=True), - tracebacks_suppress=[ - "click", - "typer", - "uvloop", - "uvicorn", - "gunicorn", - "starlette", - "starlite", - "sqlalchemy", - "anyio", - "asyncio", - ], - markup=True, - show_path=False, - omit_repeated_times=False, - ) - - -class AccessLogFilter(LoggingFilter): - """ - For filtering log events based on request path. - - Parameters - ---------- - path_re : str Regex string, - drops log event if the path of the request matches the regex. - args : Any - kwargs : Any - Args and kwargs passed through to `logging.Filter`. - """ - - def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.path_filter = re.compile(path_re) - - def filter(self, record: logging.LogRecord) -> bool: - *_, req_path, _, status_code = record.args # type: ignore - if self.path_filter.match(req_path) and status_code == HTTP_200_OK: # type: ignore - return False - return True - - -class QueueListenerHandler(QueueHandler): # type: ignore - """ - Configures queue listener and handler to support non-blocking logging configuration. - """ - - def __init__( - self, - handlers: List[Any], - respect_handler_level: bool = False, - queue: Queue[LogRecord] = Queue(-1), - ): - super().__init__(queue) - self.handlers = _resolve_handlers(handlers) - self._listener: QueueListener = QueueListener( - self.queue, *self.handlers, respect_handler_level=respect_handler_level - ) - self._listener.start() - - -class StubbedGunicornLogger(GunicornLogger): # type: ignore - """Customized Gunicorn Logger""" - - def setup(self, cfg: Any) -> None: - """Configures logger""" - self.handler = RichHandler() - self.error_logger = picologging.getLogger("gunicorn.error") - self.error_logger.addHandler(self.handler) - self.access_logger = picologging.getLogger("gunicorn.access") - self.access_logger.addHandler(self.handler) +from starlite.config import LoggingConfig +from pyspa.utils.log.extensions import PicologgingAccessLogFilter log_config = LoggingConfig( - root={"level": settings.app.LOG_LEVEL, "handlers": ["queue_listener"]}, filters={ "health_filter": { - "()": AccessLogFilter, - "path_re": f"^{ApiPaths.HEALTH}$", + "()": PicologgingAccessLogFilter, + "path_re": "^/health$", } }, handlers={ "console": { - "class": "pyspa.config.logging.RichHandler", - "level": "DEBUG", - "formatter": "standard", + "class": "pyspa.utils.log.extensions.RichPicologgingHandler", + "markup": True, + "rich_tracebacks": True, + "omit_repeated_times": False, }, "queue_listener": { "class": "starlite.logging.picologging.QueueListenerHandler", @@ -121,14 +22,13 @@ def setup(self, cfg: Any) -> None: }, }, formatters={ - "standard": {"format": "%(levelname)s - %(asctime)s - %(name)s - %(message)s"} + "standard": {"format": "%(message)s"}, }, loggers={ "pyspa": { "propagate": True, - }, - "gunicorn.error": { - "propagate": True, + "filters": ["health_filter"], + "level": "INFO", }, "uvicorn.access": { "propagate": True, @@ -137,29 +37,21 @@ def setup(self, cfg: Any) -> None: "uvicorn.error": { "propagate": True, }, - "sqlalchemy.engine": { + "sqlalchemy": { "propagate": True, }, "starlite": { "level": "WARNING", "propagate": True, }, + "pydantic_openapi_schema": { + "propagate": True, + "level": "WARNING", + "handlers": ["queue_listener"], + }, }, ) - - -@lru_cache(maxsize=1) -def get_logger(name: str = DEFAULT_LOG_NAME) -> picologging.Logger: - """ - Returns a Configured Logger - """ - log_config.configure() - return picologging.getLogger(name) - - -def _resolve_handlers(handlers: List[Any]) -> List[Any]: - """ - Converts list of string of handlers to the object of respective handler. - Indexing the list performs the evaluation of the object. - """ - return [handlers[i] for i in range(len(handlers))] +log_config.configure() +""" +Pre-configured log config for application. +""" diff --git a/src/pyspa/config/paths.py b/src/pyspa/config/paths.py new file mode 100644 index 00000000..8e99676d --- /dev/null +++ b/src/pyspa/config/paths.py @@ -0,0 +1,19 @@ +from typing import Final + +from opdba import utils + +BASE_DIR: Final = utils.import_tools.module_to_os_path("opdba") + + +class ApiPaths: + OPENAPI_SCHEMA = "/schema" + API_BASE = "/api" + HEALTH = "/health" + # Auth + ACCESS_TOKEN = "/access/login" # nosec + REFRESH_TOKEN = "/access/refresh" # nosec + SIGNUP = "/access/signup" + # + + +urls = ApiPaths() diff --git a/src/pyspa/core/__init__.py b/src/pyspa/core/__init__.py index e69de29b..06c670a9 100644 --- a/src/pyspa/core/__init__.py +++ b/src/pyspa/core/__init__.py @@ -0,0 +1,14 @@ +from pyspa.core import cache, client, compression, cors, csrf, guards, handlers, openapi, security, static_files + +__all__ = [ + "cache", + "compression", + "cors", + "csrf", + "client", + "guards", + "handlers", + "openapi", + "security", + "static_files", +] diff --git a/src/pyspa/core/asgi.py b/src/pyspa/core/asgi.py deleted file mode 100644 index 4b2e65dc..00000000 --- a/src/pyspa/core/asgi.py +++ /dev/null @@ -1,21 +0,0 @@ -from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR -from starlite import CompressionConfig, Starlite - -from pyspa import routes -from pyspa.config import settings -from pyspa.config.logging import log_config -from pyspa.core import exceptions, openapi, response - -app = Starlite( - debug=settings.app.DEBUG, - exception_handlers={ - HTTP_500_INTERNAL_SERVER_ERROR: exceptions.logging_exception_handler - }, - compression_config=CompressionConfig(backend="brotli"), - middleware=[], - on_shutdown=[], - on_startup=[log_config.configure], - openapi_config=openapi.config, - response_class=response.Response, - route_handlers=[routes.health_check], -) diff --git a/src/pyspa/core/cache.py b/src/pyspa/core/cache.py new file mode 100644 index 00000000..610cb113 --- /dev/null +++ b/src/pyspa/core/cache.py @@ -0,0 +1,154 @@ +from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union, cast + +from redis import RedisError +from redis.asyncio import Redis +from starlite import CacheConfig, Request +from starlite.cache.base import CacheBackendProtocol +from starlite.config.cache import default_cache_key_builder + +from pyspa.config import settings + +if TYPE_CHECKING: + from datetime import timedelta + +redis = Redis.from_url(settings.cache.URL) + + +class RedisAsyncioBackend(CacheBackendProtocol): # pragma: no cover + """Cache Backend for Redis""" + + async def get(self, key: str) -> "Any": # pylint: disable=invalid-overridden-method + """Retrieve a value from cache corresponding to the given key.""" + return await redis.get(key) + + async def set( # pylint: disable=invalid-overridden-method + self, key: str, value: "Any", expiration: "Optional[Union[int, timedelta]]" + ) -> "Any": + """Set a value in cache for a given key with a given expiration in + seconds.""" + return await redis.set(key, value, expiration) + + async def delete(self, key: str) -> "Any": # pylint: disable=invalid-overridden-method + """Remove a value from the cache for a given key.""" + return await redis.delete(key) + + async def scan(self, match: str, count: "Optional[int]" = None) -> "Tuple[int, list]": + """Execute Redis SCAN command with pattern matching .""" + return await redis.scan(match=match, count=count) + + async def keys(self, pattern: str) -> "list": + """Find the keys matching a given pattern . + + If the keys do not exist the special value None is returned. + An error is returned if the value stored at key is not a + string, because GET only handles string values. + """ + return await redis.keys(pattern) + + async def rpush(self, key: str, value: str, expiration: "Optional[Union[int, timedelta]]" = None) -> int: + """Execute Redis RPUSH command. + + Insert all the specified values at the tail of the list stored at key. + If key does not exist, it is created as empty list before performing + the push operation. When key holds a value that is not a list, an + error is returned. + + + """ + + if expiration: + async with redis.pipeline(transaction=True) as pipe: + push = await pipe.rpush(key, value) + await pipe.expire(key, expiration).execute() + return cast("int", push) + else: + return await redis.rpush(key, value) + + async def expire(self, key: str, expiration: "Union[int, timedelta]") -> bool: + """Execute Redis EXPIRE command. + + Sets the TTL for a key. + + """ + return await redis.expire(key, expiration) + + async def exists(self, key: str) -> bool: + """Execute Redis EXISTS command. + + Returns True if key exists. + + + """ + cnt = await redis.exists(key) + return cnt > 0 + + async def mget(self, keys: "List[str]") -> "list[str | None]": + """Execute Redis MGET command. + + Get the value of keys. If the keys do not exist the special value None + is returned. An error is returned if the value stored at key is not a + string, because GET only handles string values. + + + + """ + return await redis.mget(keys) + + async def lrange(self, key: str, start: int, end: int) -> "list": + """Execute Redis LRANGE command. + + Returns the specified elements of the list stored at key. The offsets + start and stop are zero-based indexes, with 0 being the first element + of the list (the head of the list), 1 being the next element and so on. + These offsets can also be negative numbers indicating offsets starting + at the end of the list. For example, -1 is the last element of the + list, -2 the penultimate, and so on. + + + + """ + return await redis.lrange(key, start, end) + + async def delete_keys(self, pattern: str) -> int: + """Delete keys matching a pattern. + + Returns the number of keys deleted + + """ + async with redis.pipeline(transaction=True) as pipe: + keys = await pipe.keys(pattern) + deleted = await pipe.delete(*keys).execute() + return cast("int", deleted) + + async def ping(self) -> bool: + """Ping the Redis server.""" + try: + return await redis.ping() + except RedisError: + return False + + +async def on_shutdown() -> None: + """Passed to `Starlite.on_shutdown`.""" + await redis.close() + + +def cache_key_builder(request: Request) -> str: + """Prefixes the default cache key with the app name. + + Parameters + ---------- + request : Request + + Returns + ------- + str + """ + return f"{settings.app.NAME}:{default_cache_key_builder(request)}" + + +config = CacheConfig( + backend=RedisAsyncioBackend(), + expiration=settings.cache.EXPIRATION, + cache_key_builder=cache_key_builder, +) diff --git a/src/pyspa/core/client/__init__.py b/src/pyspa/core/client/__init__.py new file mode 100644 index 00000000..65462e81 --- /dev/null +++ b/src/pyspa/core/client/__init__.py @@ -0,0 +1,4 @@ +from .client import HttpClient, on_shutdown +from .endpoint import endpoint + +__all__ = ["HttpClient", "on_shutdown", "endpoint"] diff --git a/src/pyspa/core/client/client.py b/src/pyspa/core/client/client.py new file mode 100644 index 00000000..323389c2 --- /dev/null +++ b/src/pyspa/core/client/client.py @@ -0,0 +1,85 @@ +from typing import Any + +import httpx +from starlite.exceptions import ServiceUnavailableException + + +class ClientException(ServiceUnavailableException): + """Exception for wrapping `httpx` exceptions which will return a `503 + SERVICE UNAVAILABLE` to the api client.""" + + +class HttpClient: + """Base class for HTTP clients. + + client = HttpClient() + response = client.request("GET", "/some/resource") + assert response.status_code == 200 + """ + + _client = httpx.AsyncClient() + + async def request(self, *args: Any, **kwargs: Any) -> httpx.Response: + """Passes `*args`, `**kwargs` straight through to + `httpx.AsyncClient.request`. Calls `raise_for_status()` on the + response, handles any HTTPX error by returning a 503 response to + client. + + Parameters + ---------- + args : Any + kwargs : Any + `args` and `kwargs` passed straight through to `httpx.AsyncClient.request`. + + Returns + ------- + httpx.Response + """ + try: + r = await self._client.request(*args, **kwargs) + r.raise_for_status() + except httpx.HTTPError as e: + url = e.request.url + raise ClientException(f"Client Error for '{url}'") from e + return r + + def json(self, response: httpx.Response) -> Any: + """ + Abstracts deserializing to allow for optional unwrapping of server response, e.g., + `{"data": []}`. + + Parameters + ---------- + response : httpx.Response + + Returns + ------- + Any + The result of `httpx.Response.json()` after passing through `self.unwrap_json()`. + """ + return self.unwrap_json(response.json()) + + @staticmethod + def unwrap_json(data: Any) -> Any: + """Callback for extracting nested data from the server response. + + Parameters + ---------- + data : Any + The JSON response from the server. + + Returns + ------- + Any + """ + return data + + @classmethod + async def close(cls) -> None: + """Close the client connection.""" + await cls._client.aclose() + + +async def on_shutdown() -> None: + """Passed to `Starlite.on_shutdown`.""" + await HttpClient.close() diff --git a/src/pyspa/core/client/endpoint.py b/src/pyspa/core/client/endpoint.py new file mode 100644 index 00000000..761aafa1 --- /dev/null +++ b/src/pyspa/core/client/endpoint.py @@ -0,0 +1,43 @@ +# https://github.com/MikeWooster/api-client/blob/master/apiclient/decorates.py +import inspect +from typing import Any + + +def endpoint(cls_: Any = None, base_url: Any = None) -> Any: + """Decorator for automatically constructing urls from a base_url and + defined resources. + + >>> @endpoint(base_url="https://anywhere.com") + ... class AnywhereEndpoint: + ... all_things = "all-things" + ... a_thing = "all-things/{id}" + ... + >>> AnywhereEndpoint.all_things + 'https://anywhere.com/all-things' + >>> AnywhereEndpoint.a_thing.format(id=13) + 'https://anywhere.com/all-things/13' + """ + + def wrap(cls: Any) -> Any: + return _process_class(cls, base_url) + + if cls_ is None: + # Decorator is called as @endpoint with parens. + return wrap + # Decorator is called as @endpoint without parens. + return wrap(cls_) + + +def _process_class(cls: Any, base_url: Any) -> Any: + if base_url is None: + raise RuntimeError("A decorated endpoint must define a base_url as @endpoint(base_url='https://foo.com').") + base_url = base_url.rstrip("/") + + for name, value in inspect.getmembers(cls): + if name.startswith("_") or inspect.ismethod(value) or inspect.isfunction(value): + # Ignore any private or class attributes. + continue + new_value = str(value).lstrip("/") + resource = f"{base_url}/{new_value}" + setattr(cls, name, resource) + return cls diff --git a/src/pyspa/core/compression.py b/src/pyspa/core/compression.py new file mode 100644 index 00000000..d2dbe6ed --- /dev/null +++ b/src/pyspa/core/compression.py @@ -0,0 +1,4 @@ +from starlite.config.compression import CompressionConfig + +config = CompressionConfig(backend="gzip") +"""Default compression config""" diff --git a/src/pyspa/core/cors.py b/src/pyspa/core/cors.py new file mode 100644 index 00000000..2ce3cb9d --- /dev/null +++ b/src/pyspa/core/cors.py @@ -0,0 +1,4 @@ +from starlite.config.cors import CORSConfig + +config = CORSConfig(allow_origins=["*"]) +"""Default CORS config""" diff --git a/src/pyspa/core/csrf.py b/src/pyspa/core/csrf.py new file mode 100644 index 00000000..77ba44b8 --- /dev/null +++ b/src/pyspa/core/csrf.py @@ -0,0 +1,11 @@ +from starlite.config.csrf import CSRFConfig + +from pyspa.config import settings + +config = CSRFConfig( + secret=settings.app.SECRET_KEY.get_secret_value(), + cookie_httponly=True, + cookie_secure=settings.app.CSRF_COOKIE_SECURE, + cookie_name=settings.app.CSRF_COOKIE_NAME, +) +"""Default compression config""" diff --git a/src/pyspa/core/exceptions.py b/src/pyspa/core/exceptions.py index a0ded6dc..cb613bb5 100644 --- a/src/pyspa/core/exceptions.py +++ b/src/pyspa/core/exceptions.py @@ -7,12 +7,11 @@ if TYPE_CHECKING: from starlette.responses import Response - from starlite.types import Request + from starlite.connection import Request def logging_exception_handler(request: "Request", exc: Exception) -> "Response": - """ - Logs exception and returns appropriate response. + """Logs exception and returns appropriate response. Parameters ---------- diff --git a/src/pyspa/core/guards.py b/src/pyspa/core/guards.py new file mode 100644 index 00000000..dc4657da --- /dev/null +++ b/src/pyspa/core/guards.py @@ -0,0 +1,70 @@ +from typing import TYPE_CHECKING, Any, Optional + +from starlite import BaseRouteHandler, NotAuthorizedException, Request + +if TYPE_CHECKING: + from collections.abc import Callable + + +class CheckPayloadMismatch: + """Creates a callable class instance that can be used as a Guard function + to check that path variables are equal to payload counterparts. + + Default behaviour is for the path variables to be coerced to a `str` before the + comparison. This supports the common case of comparing a `str` identity from + the payload to a UUID path parameter that has already been parsed into a UUID + object. + + Parameters + ---------- + payload_key : str + Used to extract the value from the payload. If the key does not exist in + the payload the value of the path parameter will be compared against `None`. + path_key : str + Name of the path parameter. This must be the name of a path parameter on + the route to which the guard is applied, otherwise will raise `KeyError` at runtime. + compare_fn : Callable[[Any, Any], bool] | None + For custom comparison logic, pass a two parameter callable here that returns + a `bool`. + """ + + def __init__( + self, + payload_key: str, + path_key: str, + compare_fn: Optional["Callable[[Any, Any], bool]"] = None, + ) -> None: + self.payload_key = payload_key + self.path_key = path_key + if compare_fn is not None: + self.compare_fn = staticmethod(compare_fn) + else: + self.compare_fn = self._compare + + @staticmethod + def _compare(payload_value: Any, path_value: Any) -> bool: + return payload_value == str(path_value) # type:ignore[no-any-return] + + async def __call__(self, request: Request, _: BaseRouteHandler) -> None: + """Ensure value of `self.payload_key` key in request payload matches + the value of `self.path_key` in `Request.path_params`. + + By default, calls `str` on both values before comparing. For custom comparison + provide a callable to `compare_fn` on instantiation. + + Parameters + ---------- + request : Request + _ : BaseRouteHandler + + Raises + ------ + NotAuthorizedException + If the value retrieved from the path does not test equal to the value + retrieved from the request payload. + """ + payload = await request.json() or {} + payload_value = payload.get(self.payload_key) + path_value = str(request.path_params[self.path_key]) + if not self.compare_fn(payload_value, path_value): + raise NotAuthorizedException diff --git a/src/pyspa/core/handlers.py b/src/pyspa/core/handlers.py new file mode 100644 index 00000000..ded8591b --- /dev/null +++ b/src/pyspa/core/handlers.py @@ -0,0 +1,27 @@ +import itertools +from typing import TYPE_CHECKING + +from pyspa.core.guards import CheckPayloadMismatch + +if TYPE_CHECKING: + from starlite.types import Guard + + +def resolve_id_guards(id_guard: str | tuple[str, str] | list[str | tuple[str, str]]) -> list["Guard"]: + """Resolves guards by ID. + + Parameters + ---------- + id_guard a guard id or collection of guard ids + + Returns + ------- + resolved guards. + """ + if isinstance(id_guard, str): + return [CheckPayloadMismatch("id", id_guard).__call__] + + if isinstance(id_guard, tuple): + return [CheckPayloadMismatch(*id_guard)] + + return list(itertools.chain.from_iterable(resolve_id_guards(t) for t in id_guard)) diff --git a/src/pyspa/core/openapi.py b/src/pyspa/core/openapi.py index 7daea842..7172c4c7 100644 --- a/src/pyspa/core/openapi.py +++ b/src/pyspa/core/openapi.py @@ -1,11 +1,21 @@ -from openapi_schema_pydantic import Contact # type: ignore +from pydantic_openapi_schema.v3_1_0 import Contact from starlite import OpenAPIConfig -from pyspa import __version__ +from pyspa.config import settings +from pyspa.core.security import oauth2_authentication config = OpenAPIConfig( - title="pyspa", - version=str(__version__), - contact=Contact(name="Cody Fincher", email="cody@fincher.cloud"), - description="Simple Single Page Application", + title=settings.openapi.TITLE or settings.app.NAME, + version=settings.openapi.VERSION, + contact=Contact(name=settings.openapi.CONTACT_NAME, email=settings.openapi.CONTACT_EMAIL), + use_handler_docstrings=True, + root_schema_site="elements", + components=[oauth2_authentication.openapi_components], + security=[oauth2_authentication.security_requirement], ) +""" +OpenAPI config for app, see [OpenAPISettings][starlite_bedrock.config.OpenAPISettings] + +Defaults to 'elements' for the documentation. + It has an interactive 3.1 compliant web app and Swagger does not yet support 3.1 +""" diff --git a/src/pyspa/core/response.py b/src/pyspa/core/response.py deleted file mode 100644 index b85b1fbd..00000000 --- a/src/pyspa/core/response.py +++ /dev/null @@ -1,23 +0,0 @@ -from typing import Any - -from asyncpg.pgproto import pgproto -from starlite import Response as _Response - - -class Response(_Response): - @staticmethod - def serializer(value: Any) -> Any: - """ - Custom serializer method that handles the `asyncpg.pgproto.UUID` implementation. - - Parameters - ---------- - value : Any - - Returns - ------- - Any - """ - if isinstance(value, pgproto.UUID): - return str(value) - return _Response.serializer(value) diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py new file mode 100644 index 00000000..131b4806 --- /dev/null +++ b/src/pyspa/core/security.py @@ -0,0 +1,63 @@ +import base64 +from typing import TYPE_CHECKING + +from passlib.context import CryptContext + +from pyspa import db, services +from pyspa.config import paths, settings +from pyspa.middleware import OAuth2PasswordBearerAuth +from pyspa.services.user import UserNotFoundException +from pyspa.utils.asyncer import run_async + +if TYPE_CHECKING: + from pydantic import SecretStr + + from pyspa.models import User + + +async def user_lookup(sub: str) -> "User": + user = await services.user.get_by_username(db.db_session(), sub) + if user: + return user + raise UserNotFoundException + + +oauth2_authentication = OAuth2PasswordBearerAuth( # nosec + retrieve_user_handler=user_lookup, + token_secret=settings.app.SECRET_KEY, + token_url=paths.urls.ACCESS_TOKEN, + exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], +) + +pwd_context = CryptContext(schemes=["argon2"], deprecated="auto") + + +def get_encryption_key(secret: str) -> bytes: + padded_secret = "{:<32}".format(secret)[0:32] + return base64.urlsafe_b64encode(padded_secret.encode()) + + +async def get_password_hash(password: "SecretStr") -> str: + """Get password hash + Args: + password: Plain password + Returns: + Hashed password + """ + pw_hash = await run_async(pwd_context.hash)(password.get_secret_value()) + return str(pw_hash) + + +async def verify_password(plain_password: "SecretStr", hashed_password: str) -> bool: + """Verify password + Args: + plain_password: Plain password + hashed_password: Hashed password + Returns: + True if password is correct + """ + valid, _ = await run_async(pwd_context.verify_and_update)( + plain_password.get_secret_value(), + hashed_password, + ) + return bool(valid) diff --git a/src/pyspa/core/static_files.py b/src/pyspa/core/static_files.py new file mode 100644 index 00000000..c428d530 --- /dev/null +++ b/src/pyspa/core/static_files.py @@ -0,0 +1,12 @@ +from pathlib import Path + +from starlite import StaticFilesConfig + +from pyspa.config import paths + +config = [ + StaticFilesConfig( + directories=[Path(paths.BASE_DIR, "web/public"), Path(paths.BASE_DIR, "web/assets")], path="/public" + ), +] +"""Static files config""" diff --git a/src/pyspa/core/wsgi.py b/src/pyspa/core/wsgi.py deleted file mode 100644 index 7afe4641..00000000 --- a/src/pyspa/core/wsgi.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -"""Application Web Server Gateway Interface - gunicorn.""" -import asyncio -import os -import signal -import sys -import threading -import time -from typing import TYPE_CHECKING, Any, NoReturn, Union - -from gunicorn.app.base import Application -from gunicorn.arbiter import Arbiter -from uvicorn.main import Server -from uvicorn.workers import UvicornWorker as _UvicornWorker - -from pyspa.config import settings -from pyspa.core.asgi import app - -if TYPE_CHECKING: - from starlite import Starlite - - -class ReloaderThread(threading.Thread): - def __init__(self, worker: "UvicornWorker", sleep_interval: float = 1.0): - super().__init__() - self.daemon = True - self._worker = worker - self._interval = sleep_interval - - def run(self) -> None: - """ - Sends a KILL signal to the current process if the worker's active flag is set to - False. - """ - while True: - if not self._worker.alive: - os.kill(os.getpid(), signal.SIGINT) - time.sleep(self._interval) - - -class UvicornWorker(_UvicornWorker): # type: ignore - CONFIG_KWARGS = {"loop": "uvloop", "http": "httptools", "lifespan": "auto"} - - def __init__(self, *args: list[Any], **kwargs: dict[str, Any]): - super().__init__(*args, **kwargs) - self._reloader_thread = ReloaderThread(self) - - def run(self) -> None: - if self.cfg.reload: - self._reloader_thread.start() - super().run() - - def _install_sigquit_handler(self, server: Server) -> None: - """Workaround to install a SIGQUIT handler on workers. - Ref.: - - https://github.com/encode/uvicorn/issues/1116 - - https://github.com/benoitc/gunicorn/issues/2604 - """ - if threading.current_thread() is not threading.main_thread(): - # Signals can only be listened to from the main thread. - return - - loop = asyncio.get_running_loop() - loop.add_signal_handler(signal.SIGQUIT, self.handle_exit, signal.SIGQUIT, None) - - async def _serve(self) -> None: - self.config.app = self.wsgi - server = Server(config=self.config) - self._install_sigquit_handler(server) - await server.serve(sockets=self.sockets) - if not server.started: - sys.exit(Arbiter.WORKER_BOOT_ERROR) - - -class ApplicationLoader(Application): # type: ignore - """Bootstraps the WSGI app""" - - def __init__(self, options: dict[str, str | bool | int] | None = None): - self.options = options or {} - self.config_path = self.options.pop("config", None) - super().__init__() - - def init(self, parser, options, args): # type: ignore - """Class ApplicationLoader object constructor.""" - self.options = options - self.cfg.set("default_proc_name", args[0]) - - def load_config(self) -> None: - """Load config from passed options""" - if self.config_path: - self.load_config_from_file(self.config_path) - config = { - key: value - for key, value in self.options.items() - if key in self.cfg.settings and value is not None - } - for key, value in config.items(): - self.cfg.set(key.lower(), value) - - def load(self) -> "Starlite": - """Load application.""" - return app - - -def run_wsgi( - host: str, - port: int, - http_workers: int, - reload: bool, -) -> None: - """Run gunicorn WSGI with ASGI workers.""" - sys.argv = [ - "--gunicorn", - ] - if reload: - sys.argv.append("-r") - sys.argv.append("pyspa.core.asgi:app") - ApplicationLoader( - options={ - "host": host, - "workers": str(http_workers), - "port": str(port), - "reload": reload, - "loglevel": settings.app.LOG_LEVEL, - "config": "pyspa/config/gunicorn.py", - }, - ).run() diff --git a/src/pyspa/db/__init__.py b/src/pyspa/db/__init__.py new file mode 100644 index 00000000..1e9b0c36 --- /dev/null +++ b/src/pyspa/db/__init__.py @@ -0,0 +1,42 @@ +import asyncio +from typing import TYPE_CHECKING + +from sqlalchemy.ext.asyncio import async_scoped_session + +from pyspa.db import db_types +from pyspa.db.engine import async_session_factory, create_async_engine, create_async_session_maker, engine + +if TYPE_CHECKING: + from sqlalchemy.ext.asyncio import AsyncSession + + +AsyncScopedSession = async_scoped_session(async_session_factory, scopefunc=asyncio.current_task) +""" +Scopes [`AsyncSession`][sqlalchemy.ext.asyncio.AsyncSession] instance to current task using +[`asyncio.current_task()`][asyncio.current_task]. + +Care must be taken that [`AsyncScopedSession.remove()`][sqlalchemy.ext.asyncio.async_scoped_session.remove] + is called as late as possible during each task. This is managed by the + [`Starlite.after_request`][starlite.app.Starlite] lifecycle hook. +""" + + +async def on_shutdown() -> None: + """Passed to `Starlite.on_shutdown`.""" + await engine.dispose() + + +def db_session() -> "AsyncSession": + return AsyncScopedSession() + + +__all__ = [ + "create_async_engine", + "create_async_session_maker", + "engine", + "async_session_factory", + "db_types", + "AsyncScopedSession", + "on_shutdown", + "db_session", +] diff --git a/src/pyspa/db/db_types.py b/src/pyspa/db/db_types.py new file mode 100644 index 00000000..6814a5f7 --- /dev/null +++ b/src/pyspa/db/db_types.py @@ -0,0 +1,278 @@ +from datetime import datetime, timezone +from typing import TYPE_CHECKING, Any, Literal, Optional, cast +from uuid import UUID + +from pydantic import UUID4, EmailStr, SecretStr +from sqlalchemy import JSON, TIMESTAMP, Column, String, Unicode, type_coerce +from sqlalchemy.dialects.postgresql import BYTEA, JSONB +from sqlalchemy.dialects.postgresql import UUID as PG_UUID +from sqlalchemy.orm import ColumnProperty +from sqlalchemy.orm.attributes import InstrumentedAttribute +from sqlalchemy.sql import func as sql_func +from sqlalchemy.types import CHAR, TypeDecorator, TypeEngine + +if TYPE_CHECKING: + from pydantic import BaseModel as BaseSchema + from sqlalchemy import ColumnOperators + from sqlalchemy.engine import Dialect + + +def inspect_type(mixed: Any) -> TypeEngine: + if isinstance(mixed, InstrumentedAttribute): + return cast("TypeEngine", mixed.property.columns[0].type) + elif isinstance(mixed, ColumnProperty): + return mixed.columns[0].type + elif isinstance(mixed, Column): + return mixed.type + raise ValueError(f"{mixed} is not a valid type") + + +def is_case_insensitive(mixed: Any) -> bool: + """Case Insensitive check + + Return try is the columns is configured to compare with a Case Insensitive Comparator + + + + Args: + mixed (Any): _description_ + + Returns: + bool: true if using CaseInsensitiveComparator + """ + try: + return isinstance(inspect_type(mixed).Comparator, CaseInsensitiveComparator) + except AttributeError: + try: + return issubclass( + inspect_type(mixed).comparator_factory, # type: ignore[arg-type] + CaseInsensitiveComparator, + ) + except AttributeError: + return False + + +class CaseInsensitiveComparator(Unicode.Comparator): + """Case Insensitive Comparator + + SQL String column comparer that ignore case. + + Args: + Unicode (_type_): _description_ + + Returns: + _type_: _description_ + """ + + @classmethod + def lowercase_arg(cls, func: Any) -> Any: + """Lowercase Arguments in operation + + Args: + func (Any): _description_ + + Returns: + Any: _description_ + """ + + def operation(self: Any, other: Any, **kwargs: Any) -> Any: + operator = getattr(Unicode.Comparator, func) + if other is None: + return operator(self, other, **kwargs) + if not is_case_insensitive(other): + other = sql_func.lower(other) + return operator(self, other, **kwargs) + + return operation(cls, func) + + def in_(self, other: Any) -> "ColumnOperators": + if isinstance(other, (list, tuple)): + other = map(sql_func.lower, other) + return Unicode.Comparator.in_(self, other) + + def not_in(self, other: Any) -> "ColumnOperators": + if isinstance(other, (list, tuple)): + other = map(sql_func.lower, other) + return Unicode.Comparator.not_in(self, other) + + +class GUID(TypeDecorator): + """Platform-independent GUID type. + + Uses PostgreSQL's UUID type, otherwise uses + CHAR(32), storing as stringified hex values. + """ + + class UUIDChar(CHAR): + python_type = UUID4 + + impl = UUIDChar + cache_ok = True + + def load_dialect_impl(self, dialect: "Dialect") -> Any: + if dialect.name == "postgresql": + return dialect.type_descriptor(PG_UUID()) + else: + return dialect.type_descriptor(CHAR(32)) + + def process_bind_param(self, value: Any, dialect: "Dialect") -> Optional[str]: + if value is None: + return value + elif dialect.name == "postgresql": + return str(value) + else: + if not isinstance(value, UUID): + return "%.32x" % UUID(value).int # pylint: disable=[consider-using-f-string] + else: + return "%.32x" % value.int # pylint: disable=[consider-using-f-string] + + def process_result_value(self, value: Any, dialect: "Dialect") -> Any: + if value is None: + return value + else: + if not isinstance(value, UUID): + value = UUID(value) + return value + + @property + def python_type(self) -> type[UUID4]: + return self.impl.python_type + + +class TimestampAwareDateTime(TypeDecorator): + """ + MySQL and SQLite will always return naive-Python datetimes. + + We store everything as UTC, but we want to have + only offset-aware Python datetimes, even with MySQL and SQLite. + """ + + class DateTimeType(TIMESTAMP): + python_type = datetime + + impl = DateTimeType + cache_ok = True + + def process_result_value(self, value: Optional[datetime], dialect: "Dialect") -> Optional[datetime]: + if value is not None and dialect.name not in {"postgresql", "oracle"}: + return value.replace(tzinfo=timezone.utc) + return value + + @property + def python_type(self) -> type[datetime]: + return self.impl.python_type + + +class EmailString(TypeDecorator): + """ + Email string validator + """ + + class EmailType(Unicode): + python_type = EmailStr + + impl = EmailType + comparator_factory = CaseInsensitiveComparator + cache_ok = True + + def __init__(self, *args: Any, length: int = 255, **kwargs: Any) -> None: + kwargs["length"] = length + super().__init__(*args, **kwargs) + + def process_bind_param(self, value: Optional[str | EmailStr], dialect: "Dialect") -> Any | None: + if value is not None: + return value.lower() + return value + + @property + def python_type(self) -> type[EmailStr]: + return self.impl.python_type + + +class JsonObject(TypeDecorator): + """Platform-independent JSON type. + + Uses JSONB type for postgres, otherwise uses generic JSON + """ + + class JSONType(String): + python_type = dict[str, Any] + + impl = JSONType + cache_ok = True + + def load_dialect_impl(self, dialect: "Dialect") -> Any: + if dialect.name == "postgresql": + return dialect.type_descriptor(JSONB()) # type: ignore[no-untyped-call] + else: + return dialect.type_descriptor(JSON()) + + @property + def python_type(self) -> type[dict[str, Any]]: + return self.impl.python_type + + +class PydanticType(TypeDecorator): + """Pydantic type. + SAVING: + - Uses SQLAlchemy JSON type under the hood. + - Accepts the pydantic model and converts it to a dict on save. + - SQLAlchemy engine JSON-encodes the dict to a string. + RETRIEVING: + - Pulls the string from the database. + - SQLAlchemy engine JSON-decodes the string to a dict. + - Uses the dict to create a pydantic model. + """ + + impl = JsonObject + cache_ok = True + + def __init__(self, pydantic_type: "BaseSchema"): + super().__init__() + self.pydantic_type = pydantic_type + + def process_bind_param(self, value: Any, dialect: "Dialect") -> Any: + return value.dict() if value else None + + def process_result_value(self, value: Any, dialect: "Dialect") -> Any: + return self.pydantic_type.parse_obj(value) if value else None + + +class EncryptedString(TypeDecorator): + """Encrypted String + + Configurable encrypted string field for SQL Alchemy + Args: + TypeDecorator (_type_): _description_ + + Raises: + NotImplementedError: Unsupported backend + + Returns: + _type_: _description_ + """ + + impl = BYTEA + + cache_ok = True + + def __init__(self, passphrase: SecretStr | str, backend: Literal["pgcrypto", "tink"] = "pgcrypto") -> None: + super().__init__() + self.passphrase = passphrase + self.backend = backend + + def bind_expression(self, bindparam: Any) -> Any: + # convert the bind's type from EncryptedString to + # String, so that it's passed to postgres as is without + # a dbapi.Binary wrapper + bindparam = type_coerce(bindparam, String) + if self.backend == "pgcrypto": + return sql_func.pgp_sym_encrypt(bindparam, self.passphrase) + if self.backend == "tink": + raise NotImplementedError + + def column_expression(self, column: Any) -> Any: + if self.backend == "pgcrypto": + return sql_func.pgp_sym_encrypt(column, self.passphrase) + if self.backend == "tink": + raise NotImplementedError diff --git a/src/pyspa/db/engine.py b/src/pyspa/db/engine.py new file mode 100644 index 00000000..275e6ba0 --- /dev/null +++ b/src/pyspa/db/engine.py @@ -0,0 +1,76 @@ +from functools import partial +from typing import TYPE_CHECKING, Any +from uuid import UUID + +from orjson import dumps +from sqlalchemy import event +from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker +from sqlalchemy.ext.asyncio import create_async_engine as _create_async_engine +from sqlalchemy.pool import NullPool + +from pyspa.config import settings + +if TYPE_CHECKING: + from pyspa.config.application import Settings + + +def _default(val: Any) -> str: + if isinstance(val, UUID): + return str(val) + raise TypeError() + + +def create_async_engine(settings: "Settings") -> "AsyncEngine": + engine = _create_async_engine( + settings.db.URL, + echo=settings.db.ECHO, + echo_pool=settings.db.ECHO_POOL, + json_serializer=partial(dumps, default=_default), + max_overflow=settings.db.POOL_MAX_OVERFLOW, + pool_size=settings.db.POOL_SIZE, + pool_timeout=settings.db.POOL_TIMEOUT, + pool_recycle=settings.db.POOL_RECYCLE, + pool_pre_ping=settings.db.POOL_PRE_PING, + poolclass=NullPool if settings.db.POOL_DISABLE else None, + ) + dialect_name = engine.dialect.name + # Special tweak for SQLite to better handle transaction + # See: https://docs.sqlalchemy.org/en/14/dialects/sqlite.html#serializable-isolation-savepoints-transactional-ddl + if dialect_name == "sqlite": + + @event.listens_for(engine.sync_engine, "connect") + def do_connect(dbapi_connection, connection_record) -> None: # type: ignore[no-untyped-def] + # disable pysqlite's emitting of the BEGIN statement entirely. + # also stops it from emitting COMMIT before any DDL. + dbapi_connection.isolation_level = None + + # Enable SQLite foreign key support, which is not enabled by default + # See: https://www.sqlite.org/foreignkeys.html#fk_enable + dbapi_connection.execute("pragma foreign_keys=ON") + + @event.listens_for(engine.sync_engine, "begin") + def do_begin(conn): # type: ignore[no-untyped-def] + # emit our own BEGIN + conn.exec_driver_sql("BEGIN") + + return engine + + +def create_async_session_maker(engine: "AsyncEngine") -> async_sessionmaker[AsyncSession]: + return async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession) + + +""" +Configure via [Settings][pyspa.config.application.Settings]. +Overrides default JSON serializer to use `orjson`. +See [`create_async_engine()`][sqlalchemy.ext.asyncio.create_async_engine] + for detailed instructions. +""" +engine = create_async_engine(settings) +""" +Database engine. See [`create_async_engine()`][sqlalchemy.ext.asyncio.engine]. +""" +async_session_factory = create_async_session_maker(engine) +""" +Database session factory. See [`async_sessionmaker()`][sqlalchemy.ext.asyncio.async_sessionmaker]. +""" diff --git a/src/pyspa/db/migrations/README b/src/pyspa/db/migrations/README new file mode 100644 index 00000000..2500aa1b --- /dev/null +++ b/src/pyspa/db/migrations/README @@ -0,0 +1 @@ +Generic single-database configuration. diff --git a/src/pyspa/db/migrations/env.py b/src/pyspa/db/migrations/env.py new file mode 100644 index 00000000..3413ecf3 --- /dev/null +++ b/src/pyspa/db/migrations/env.py @@ -0,0 +1,94 @@ +import asyncio +from logging.config import fileConfig +from typing import TYPE_CHECKING + +from alembic import context +from sqlalchemy import pool +from sqlalchemy.ext.asyncio import async_engine_from_config + +from pyspa.config import settings +from pyspa.models import BaseModel + +if TYPE_CHECKING: + from sqlalchemy.engine import Connection + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +fileConfig(config.config_file_name) # type: ignore + +# add your model's MetaData object here +# for 'autogenerate' support +target_metadata = BaseModel.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline() -> None: + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + context.configure( + url=settings.db.URL, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def do_run_migrations(connection: "Connection") -> None: + context.configure( + connection=connection, + target_metadata=target_metadata, + compare_type=True, + version_table="ddl_version", + user_module_prefix="sa.", + ) + + with context.begin_transaction(): + context.run_migrations() + + +async def run_migrations_online() -> None: + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + configuration = config.get_section(config.config_ini_section) or {} + configuration["sqlalchemy.url"] = settings.db.URL + connectable = async_engine_from_config( + configuration, + prefix="sqlalchemy.", + poolclass=pool.NullPool, + future=True, + ) + + async with connectable.connect() as connection: + await connection.run_sync(do_run_migrations) + + await connectable.dispose() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + asyncio.run(run_migrations_online()) diff --git a/src/pyspa/db/migrations/script.py.mako b/src/pyspa/db/migrations/script.py.mako new file mode 100644 index 00000000..dc4c9983 --- /dev/null +++ b/src/pyspa/db/migrations/script.py.mako @@ -0,0 +1,33 @@ +# type: ignore +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime + +${imports if imports else ""} + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/src/pyspa/core/prestart.py b/src/pyspa/db/migrations/versions/.gitkeep similarity index 100% rename from src/pyspa/core/prestart.py rename to src/pyspa/db/migrations/versions/.gitkeep diff --git a/src/pyspa/middleware/__init__.py b/src/pyspa/middleware/__init__.py new file mode 100644 index 00000000..b8cdd422 --- /dev/null +++ b/src/pyspa/middleware/__init__.py @@ -0,0 +1,4 @@ +from pyspa.middleware.db import DatabaseSessionMiddleware +from pyspa.middleware.jwt import OAuth2PasswordBearerAuth + +__all__ = ["DatabaseSessionMiddleware", "OAuth2PasswordBearerAuth"] diff --git a/src/pyspa/middleware/db.py b/src/pyspa/middleware/db.py new file mode 100644 index 00000000..33c68012 --- /dev/null +++ b/src/pyspa/middleware/db.py @@ -0,0 +1,43 @@ +import logging +from typing import TYPE_CHECKING + +from starlite.middleware import MiddlewareProtocol + +from pyspa.db import AsyncScopedSession + +if TYPE_CHECKING: + from starlette.types import ASGIApp, Message, Receive, Scope, Send + + +__all__ = ["DatabaseSessionMiddleware"] + +logger = logging.getLogger(__name__) + + +class DatabaseSessionMiddleware(MiddlewareProtocol): + def __init__(self, app: "ASGIApp") -> None: + self.app = app + + @staticmethod + async def _manage_session(message: "Message") -> None: + logger.debug("_manage_session() called: %s", message) + if 200 <= message["status"] < 300: + await AsyncScopedSession.commit() + logger.debug("session committed") + else: + await AsyncScopedSession.rollback() + logger.debug("database session rolled back") + await AsyncScopedSession.remove() + logger.debug("database session removed") + + async def __call__(self, scope: "Scope", receive: "Receive", send: "Send") -> None: + if scope["type"] == "http": + + async def send_wrapper(message: "Message") -> None: + if message["type"] == "http.response.start": + await self._manage_session(message) + await send(message) + + await self.app(scope, receive, send_wrapper) + else: + await self.app(scope, receive, send) diff --git a/src/pyspa/middleware/jwt.py b/src/pyspa/middleware/jwt.py new file mode 100644 index 00000000..d2fb1c1d --- /dev/null +++ b/src/pyspa/middleware/jwt.py @@ -0,0 +1,67 @@ +from typing import Dict, Optional, Union + +from pydantic import AnyUrl +from pydantic_openapi_schema.v3_1_0 import Components, OAuthFlow, OAuthFlows, SecurityRequirement, SecurityScheme +from starlite_jwt import JWTAuth + + +class OAuth2PasswordBearerAuth(JWTAuth): + """Basic Oauth2 Schema for Password Bearer Authentication.""" + + openapi_security_scheme_name: str = "AccountLogin" + """ + The value to use for the OpenAPI security scheme and security requirements + """ + token_url: Union[str, AnyUrl] + """ + The URL for retrieving a new token + """ + scopes: Optional[Dict[str, str]] = {} + """Scopes available for the token""" + + @property + def oauth_flow(self) -> OAuthFlow: + """Creates an OpenAPI OAuth2 flow for the password bearer authentication + schema. + + Returns: + An [OAuthFlow][pydantic_schema_pydantic.v3_1_0.oauth_flow.OAuthFlow] instance. + """ + return OAuthFlow( + tokenUrl=self.token_url, + scopes=self.scopes, + ) + + @property + def openapi_components(self) -> Components: + """Creates OpenAPI documentation for the JWT auth schema used. + + Returns: + An [Components][pydantic_schema_pydantic.v3_1_0.components.Components] instance. + """ + return Components( + securitySchemes={ + self.openapi_security_scheme_name: SecurityScheme( + type="oauth2", + name=self.auth_header, + security_scheme_in="header", + description="OAUTH2 password bearer authentication and authorization.", + scheme="Bearer", + bearerFormat="JWT", + flows=OAuthFlows( + password=OAuthFlow( + tokenUrl=self.token_url, + scopes=self.scopes, + ) + ), + ) + } + ) + + @property + def security_requirement(self) -> SecurityRequirement: + """ + Returns: + An OpenAPI 3.1 [SecurityRequirement][pydantic_schema_pydantic.v3_1_0.security_requirement.SecurityRequirement] dictionary. + """ + return {self.openapi_security_scheme_name: []} diff --git a/src/pyspa/models/__init__.py b/src/pyspa/models/__init__.py new file mode 100644 index 00000000..a546da6e --- /dev/null +++ b/src/pyspa/models/__init__.py @@ -0,0 +1,19 @@ +# export models here so that are easy to access via `models.*` +from pyspa.models.base import BaseModel, meta +from pyspa.models.collection import Collection, Upload +from pyspa.models.organization import Organization +from pyspa.models.user import User +from pyspa.models.workspace import Workspace, WorkspaceInvitation, WorkspaceMember, WorkspaceRoleTypes + +__all__ = [ + "BaseModel", + "meta", + "User", + "Workspace", + "WorkspaceInvitation", + "WorkspaceMember", + "WorkspaceRoleTypes", + "Organization", + "Collection", + "Upload", +] diff --git a/src/pyspa/models/base.py b/src/pyspa/models/base.py new file mode 100644 index 00000000..98d0d3f5 --- /dev/null +++ b/src/pyspa/models/base.py @@ -0,0 +1,200 @@ +import functools +import uuid +from datetime import datetime, timedelta, timezone +from typing import Any, Optional, TypeAlias, TypeVar + +import sqlalchemy as sa +from pydantic import UUID4 +from sqlalchemy import orm +from sqlalchemy.dialects import postgresql as pg +from sqlalchemy.event import listens_for +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.ext.compiler import compiles +from sqlalchemy.orm import DeclarativeBase, Session +from sqlalchemy.orm.decl_api import declarative_mixin, declared_attr +from sqlalchemy.sql import func as sql_func +from sqlalchemy.sql.expression import FunctionElement + +from pyspa.db import db_types as t + +__all__ = [ + "meta", + "mapper_registry", + "BaseModel", + "SlugModelMixin", + "SoftDeleteMixin", + "ExpiresAtMixin", + "IntegerPrimaryKeyMixin", +] + +convention = { + "ix": "ix_%(column_0_label)s", + "uq": "uq_%(table_name)s_%(column_0_name)s", + "ck": "ck_%(table_name)s_%(constraint_name)s", + "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", + "pk": "pk_%(table_name)s", +} +""" +Templates for automated constraint name generation. +""" + +meta = sa.MetaData(naming_convention=convention) +mapper_registry: orm.registry = orm.registry(metadata=meta, type_annotation_map={uuid.UUID: pg.UUID, dict: pg.JSONB}) + + +@listens_for(orm.Session, "before_flush") +def touch_updated_timestamp(session: Session, *_: Any) -> None: + """ + Called from SQLAlchemy's [`before_flush`][sqlalchemy.orm.SessionEvents.before_flush] event to + bump the `updated` timestamp on modified instances. + + Parameters + ---------- + session : Session + The sync [`Session`][sqlalchemy.orm.Session] instance that underlies the async session. + """ + for instance in session.dirty: + if getattr(instance, "updated_at", None): + setattr(instance, "updated_at", datetime.now()) # noqa: B010 + + +class coalesce(FunctionElement): # pylint: disable=[invalid-name] + name = "coalesce" + inherit_cache = True + + +@compiles(coalesce) # type: ignore +def compile_coalesce(element, compiler, **kw: Any) -> str: # type: ignore[no-untyped-def] # pylint: disable=[unused-argument] + return f"coalesce({compiler.process(element.clauses)})" + + +@compiles(coalesce, "oracle") # type: ignore +def compile_nvl(element, compiler, **kw) -> str: # type: ignore[no-untyped-def] # pylint: disable=[unused-argument] + if len(element.clauses) > 2: + raise TypeError("coalesce (nvl) only supports two arguments on Oracle") + return f"nvl({compiler.process(element.clauses)})" + + +class BaseModel(DeclarativeBase): + """ + Base for all SQLAlchemy declarative models. + """ + + registry = mapper_registry + # required in order to access columns with server defaults + # or SQL expression defaults, subsequent to a flush, without + # triggering an expired load + __mapper_args__ = {"eager_defaults": True} + id: orm.Mapped[UUID4] = sa.Column( # type: ignore[assignment] + t.GUID, primary_key=True, default=uuid.uuid4, unique=True, nullable=False + ) + id._creation_order = 1 # type: ignore[attr-defined] # pylint: disable=[protected-access] + + def from_dict(self, **kwargs: Any) -> "BaseModel": + """Return ORM Object from Dictionary""" + if self.__table__: + for column in self.__table__.columns: + if column.name in kwargs: + setattr(self, column.name, kwargs.get(column.name)) + return self + + def dict(self) -> dict[str, Any]: + """Returns a dict representation of a model.""" + if self.__table__: + return {field.name: getattr(self, field.name) for field in self.__table__.columns} + return {} + + +@declarative_mixin +class IntegerPrimaryKeyMixin: + """GUID Column Mixin""" + + id: orm.Mapped[int] = sa.Column( + sa.BigInteger, sa.Identity(always=True), primary_key=True, unique=True, nullable=False + ) + id._creation_order = 1 # type: ignore[attr-defined] # pylint: disable=[protected-access] + + +@declarative_mixin +class SlugModelMixin: + slug: orm.Mapped[str] = sa.Column(sa.String(length=100), index=True, nullable=False, unique=True) + slug._creation_order = 2 # type: ignore[attr-defined] # pylint: disable=[protected-access] + + +@declarative_mixin +class SoftDeleteMixin: + is_deleted: orm.Mapped[bool] = sa.Column(sa.Boolean, index=True, nullable=False, default=False) + is_deleted._creation_order = 999 # type: ignore[attr-defined] # pylint: disable=[protected-access] + + +@declarative_mixin +class CreatedUpdatedAtMixin: + """Created At/Updated At Mixin""" + + created_at: orm.Mapped[datetime] = sa.Column( + t.TimestampAwareDateTime(timezone=True), + nullable=False, + index=True, + default=datetime.now(timezone.utc), + server_default=sql_func.now(), + comment="Date the record was inserted", + ) + created_at._creation_order = 9998 # type: ignore[attr-defined] # pylint: disable=[protected-access] + updated_at: orm.Mapped[datetime] = sa.Column( + t.TimestampAwareDateTime(timezone=True), + nullable=True, + index=True, + server_default=None, + comment="Date the record was last modified", + ) + updated_at._creation_order = 9998 # type: ignore[attr-defined] # pylint: disable=[protected-access] + + +def _get_default_expires_at(timedelta_seconds: int) -> datetime: + return datetime.now(timezone.utc) + timedelta(seconds=timedelta_seconds) + + +@declarative_mixin +class ExpiresAtMixin: + """Expires at mixin""" + + __lifetime_seconds__: int = 3600 + + @declared_attr + def expires_at(cls) -> orm.Mapped[datetime]: # pylint: disable=[no-self-argument] + return sa.Column( + t.TimestampAwareDateTime(timezone=True), + nullable=False, + index=True, + default=functools.partial( + _get_default_expires_at, + timedelta_seconds=cls.__lifetime_seconds__, + ), + ) + + +def find_by_table_name(table_name: str) -> Optional["DatabaseModelType"]: + """Return model based on class""" + for mapper in mapper_registry.mappers: + model: DatabaseModelType = mapper.class_ # type: ignore + model_class_name = model.__tablename__ + if model_class_name == table_name: + return model + return None + + +DatabaseSession: TypeAlias = AsyncSession | Session +DatabaseModelType = TypeVar("DatabaseModelType", bound=BaseModel) # pylint: disable=[invalid-name] +DatabaseModelWithSlugType = TypeVar("DatabaseModelWithSlugType", bound=SlugModelMixin) # pylint: disable=[invalid-name] +DatabaseModelWithIntegerPrimaryKeyType = TypeVar( # pylint: disable=[invalid-name] + "DatabaseModelWithIntegerPrimaryKeyType", bound=IntegerPrimaryKeyMixin +) +DatabaseModelWithCreatedUpdatedAtType = TypeVar( # pylint: disable=[invalid-name] + "DatabaseModelWithCreatedUpdatedAtType", bound=CreatedUpdatedAtMixin +) +DatabaseModelWithExpiresAtType = TypeVar( # pylint: disable=[invalid-name] + "DatabaseModelWithExpiresAtType", bound=ExpiresAtMixin +) +DatabaseModelWithSoftDeleteType = TypeVar( # pylint: disable=[invalid-name] + "DatabaseModelWithSoftDeleteType", bound=SoftDeleteMixin +) diff --git a/src/pyspa/models/collection.py b/src/pyspa/models/collection.py new file mode 100644 index 00000000..f117fa47 --- /dev/null +++ b/src/pyspa/models/collection.py @@ -0,0 +1,58 @@ +from typing import TYPE_CHECKING + +import sqlalchemy as sa +from pydantic import UUID4 +from sqlalchemy import orm + +from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin + +if TYPE_CHECKING: + from .workspace import Workspace + + +class Collection(BaseModel, CreatedUpdatedAtMixin): + """Assessment Collection""" + + __tablename__ = "collection" + __table_args__ = {"comment": "Stores the top level collection of files"} + + file_name: orm.Mapped[str] = sa.Column(sa.Unicode(length=255), index=True) # type: ignore[no-untyped-call] + uploaded_by: orm.Mapped[str] = sa.Column(sa.Unicode(length=255), index=False) # type: ignore[no-untyped-call] + is_processed: orm.Mapped[bool] = sa.Column(sa.Boolean, nullable=False, default=False, index=True) + workspace_id: orm.Mapped[UUID4] = sa.Column( + sa.ForeignKey("workspace.id", ondelete="cascade"), + nullable=False, + ) + # ----------- + # ORM Relationships + # ------------ + workspace: orm.Mapped["Workspace"] = orm.relationship( + "Workspace", + back_populates="collections", + innerjoin=True, + viewonly=True, + ) + + +class Upload(BaseModel, CreatedUpdatedAtMixin): + """Users""" + + __tablename__ = "upload" + __table_args__ = {"comment": "Stores links to uploaded files"} + + file_name: orm.Mapped[str] = sa.Column(sa.String(length=255), index=True) + uploaded_by: orm.Mapped[str] = sa.Column(sa.String(length=255), index=False) + is_processed: orm.Mapped[bool] = sa.Column(sa.Boolean, nullable=False, default=False, index=True) + workspace_id: orm.Mapped[UUID4] = sa.Column( + sa.ForeignKey("workspace.id", ondelete="cascade"), + nullable=False, + ) + # ----------- + # ORM Relationships + # ------------ + workspace: orm.Mapped["Workspace"] = orm.relationship( + "Workspace", + back_populates="uploads", + innerjoin=True, + viewonly=True, + ) diff --git a/src/pyspa/models/team.py b/src/pyspa/models/team.py new file mode 100644 index 00000000..a2379e7d --- /dev/null +++ b/src/pyspa/models/team.py @@ -0,0 +1,137 @@ +# Standard Library +from enum import Enum +from typing import TYPE_CHECKING + +import sqlalchemy as sa +from pydantic import UUID4, EmailStr +from sqlalchemy import orm + +from pyspa.db import db_types as t +from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin + +if TYPE_CHECKING: + from .collection import Collection, Upload + from .organization import Organization + from .user import User + + +# # ---------------------------- +# Roles +class WorkspaceRoleTypes(str, Enum): + """Workspace Role valid values""" + + ADMIN = "ADMIN" + MEMBER = "MEMBER" + + +class Workspace(BaseModel, CreatedUpdatedAtMixin): + """Contains collections of Databases. + + Allows for grouping and permissions to be applied to a set of databases. + + Users can create and invite users to a workspace. + """ + + __tablename__ = "workspace" + name: orm.Mapped[str] = sa.Column(sa.Unicode(255), nullable=False, index=True) # type: ignore[no-untyped-call] + description: orm.Mapped[str] = sa.Column(sa.Unicode(500)) # type: ignore[no-untyped-call] + organization_id: orm.Mapped[UUID4] = sa.Column( + sa.ForeignKey("organization.id", ondelete="SET NULL"), + nullable=True, + ) + is_active: orm.Mapped[bool] = sa.Column(sa.Boolean, default=True, nullable=False) + # ----------- + # ORM Relationships + # ------------ + members: orm.Mapped[list["WorkspaceMember"]] = orm.relationship( + "WorkspaceMember", + back_populates="workspace", + lazy="subquery", + load_on_pending=True, + cascade="all, delete", + active_history=True, + ) + invitations: orm.Mapped[list["WorkspaceInvitation"]] = orm.relationship( + "WorkspaceInvitation", + back_populates="workspace", + lazy="noload", + ) + pending_invitations: orm.Mapped[list["WorkspaceInvitation"]] = orm.relationship( + "WorkspaceInvitation", + primaryjoin="and_(WorkspaceInvitation.workspace_id==Workspace.id, WorkspaceInvitation.is_accepted == False)", # noqa: E501 + viewonly=True, + lazy="noload", + ) + organization: orm.Mapped["Organization"] = orm.relationship( + "Organization", + uselist=False, + back_populates="workspaces", + lazy="noload", + ) + collections: orm.Mapped[list["Collection"]] = orm.relationship( + "Collection", + back_populates="workspace", + lazy="subquery", + ) + uploads: orm.Mapped[list["Upload"]] = orm.relationship( + "Upload", + back_populates="workspace", + lazy="noload", + ) + + +class WorkspaceMember(BaseModel, CreatedUpdatedAtMixin): + """Workspace Membership""" + + __tablename__ = "workspace_member" + __table_args__ = (sa.UniqueConstraint("user_id", "workspace_id"),) + user_id: orm.Mapped[UUID4] = sa.Column( + sa.ForeignKey("user_account.id"), + nullable=False, + ) + workspace_id: orm.Mapped[UUID4] = sa.Column( + sa.ForeignKey("workspace.id"), + nullable=False, + ) + role: orm.Mapped[WorkspaceRoleTypes] = sa.Column( + sa.String(length=50), + default=WorkspaceRoleTypes.MEMBER, + nullable=False, + index=True, + ) + is_owner: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False, nullable=False) + # ----------- + # ORM Relationships + # ------------ + user: orm.Mapped["User"] = orm.relationship( + "User", + back_populates="workspaces", + lazy="joined", + foreign_keys="WorkspaceMember.user_id", + active_history=True, + ) + workspace: orm.Mapped["Workspace"] = orm.relationship( + "Workspace", + back_populates="members", + lazy="joined", + foreign_keys="WorkspaceMember.workspace_id", + active_history=True, + ) + + +class WorkspaceInvitation(BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin): + """Workspace Invite""" + + __tablename__ = "workspace_invitation" + workspace_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("workspace.id"), nullable=False) + email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, nullable=False) + role: orm.Mapped[WorkspaceRoleTypes] = sa.Column( + sa.String(length=50), default=WorkspaceRoleTypes.MEMBER, nullable=False + ) + is_accepted: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False) + invited_by_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) + # ----------- + # ORM Relationships + # ------------ + workspace: orm.Mapped["Workspace"] = orm.relationship("Workspace", foreign_keys="WorkspaceInvitation.workspace_id") + invited_by: orm.Mapped["User"] = orm.relationship("User", foreign_keys="WorkspaceInvitation.invited_by_id") diff --git a/src/pyspa/models/user.py b/src/pyspa/models/user.py new file mode 100644 index 00000000..480d7ddf --- /dev/null +++ b/src/pyspa/models/user.py @@ -0,0 +1,34 @@ +from typing import TYPE_CHECKING + +import sqlalchemy as sa +from pydantic import EmailStr +from sqlalchemy import orm + +from pyspa.db import db_types as t +from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin + +if TYPE_CHECKING: + from .workspace import WorkspaceMember + + +class User(BaseModel, CreatedUpdatedAtMixin): + """Users""" + + __tablename__ = "user_account" + __table_args__ = {"comment": "User accounts for OP DBA access"} + + full_name: orm.Mapped[str] = sa.Column(sa.String(length=255), nullable=True) + email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, unique=True, index=True, nullable=False) + hashed_password: orm.Mapped[str] = sa.Column(sa.String(length=255), nullable=True) + is_active: orm.Mapped[bool] = sa.Column(sa.Boolean, default=True, nullable=False) + is_superuser: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False, nullable=False) + is_verified: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False, nullable=False) + # ----------- + # ORM Relationships + # ------------ + workspaces: orm.Mapped[list["WorkspaceMember"]] = orm.relationship( + "WorkspaceMember", + back_populates="user", + lazy="subquery", + cascade="all, delete", + ) diff --git a/src/pyspa/repositories/__init__.py b/src/pyspa/repositories/__init__.py new file mode 100644 index 00000000..3bfe7e3b --- /dev/null +++ b/src/pyspa/repositories/__init__.py @@ -0,0 +1,4 @@ +from pyspa.repositories.base import BaseRepository +from pyspa.repositories.user import UserRepository, user + +__all__ = ["user", "BaseRepository", "UserRepository", "BaseRepository"] diff --git a/src/pyspa/repositories/base.py b/src/pyspa/repositories/base.py new file mode 100644 index 00000000..d485322b --- /dev/null +++ b/src/pyspa/repositories/base.py @@ -0,0 +1,412 @@ +import asyncio +import random +import string +from collections import abc +from contextlib import contextmanager +from datetime import datetime, timezone +from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, Tuple, Type, TypeVar, Union, cast, overload +from uuid import UUID + +from pydantic import UUID4 +from sqlalchemy.engine import Result +from sqlalchemy.exc import IntegrityError, SQLAlchemyError +from sqlalchemy.orm import InstrumentedAttribute, RelationshipProperty +from sqlalchemy.sql import Select, delete +from sqlalchemy.sql import func as sql_func +from sqlalchemy.sql import select +from sqlalchemy.sql.selectable import TypedReturnsRows + +from pyspa.models.base import ( + DatabaseModelType, + DatabaseModelWithCreatedUpdatedAtType, + DatabaseModelWithExpiresAtType, + DatabaseModelWithSlugType, + DatabaseModelWithSoftDeleteType, +) +from pyspa.utils.text import slugify + +if TYPE_CHECKING: + from sqlalchemy import Executable + from sqlalchemy.ext.asyncio import AsyncSession + +__all__ = [ + "RepositoryNotFoundException", + "RepositoryConflictException", + "RepositoryException", + "ParamType", + "RepositoryType", + "BaseRepository", + "SlugRepositoryMixin", +] + +T = TypeVar("T") +ParamType = TypeVar("ParamType", bound=float | str | UUID | datetime | int) # pylint: disable=[invalid-name] +RepositoryType = TypeVar("RepositoryType", bound="BaseRepository") # pylint: disable=[invalid-name] +TableRowType = TypeVar("TableRowType", bound=tuple[Any, ...]) # pylint: disable=[invalid-name] + + +class RepositoryException(Exception): + """ + Base repository exception type. + """ + + +class RepositoryConflictException(RepositoryException): + """ + Wraps integrity error from database layer. + """ + + +class RepositoryNotFoundException(RepositoryException): + """ + Raised when a method referencing a specific instance by identity is called and no instance with + that identity exists. + """ + + +class RepositoryProtocol(Protocol[DatabaseModelType]): + """_summary_ + + Args: + Protocol (_type_): _description_ + """ + + model: Type[DatabaseModelType] + """ + A model that extends [`DeclarativeBase`][sqlalchemy.orm.DeclarativeBase]. Must be set by concrete subclasses. + """ + base_error_type: type[Exception] = RepositoryException + """ + Exception type raised when there is not a more specific error to throw. + """ + integrity_error_type: type[Exception] = RepositoryConflictException + """ + Exception type raised when a database layer integrity error is caught. + """ + not_found_error_type: type[Exception] = RepositoryNotFoundException + """ + Exception type raised on access to `scalar()`, `update()` and `delete()` + methods when the select query returns no rows. + Default `RepositoryNotFoundException`. + """ + + @contextmanager + def catch_sqlalchemy_exception(self) -> Any: + """ + Context manager that raises a custom exception chained from an original + [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError]. + + If [`IntegrityError`][sqlalchemy.exc.IntegrityError] is raised, we raise + [`Base.integrity_error_type`][starlite_bedrock.repository.Base.integrity_error_type]. + + Any other [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError] is wrapped in + [`Base.base_error_type`][starlite_bedrock.repository.Base.base_error_type]. + """ + try: + yield + except IntegrityError as e: + raise self.integrity_error_type from e + except SQLAlchemyError as e: + raise self.base_error_type(f"An exception occurred: {e}") from e + + async def paginate( + self, session: "AsyncSession", statement: "Select", limit: int = 10, offset: int = 0 + ) -> "Tuple[List[DatabaseModelType], int]": + ... # pragma: no cover + + @overload + async def execute( + self, session: "AsyncSession", statement: "TypedReturnsRows[TableRowType]", **kwargs: "Any" + ) -> "Result[TableRowType]": + ... + + @overload + async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": + ... + + async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": + ... # pragma: no cover + + async def commit(self, session: "AsyncSession") -> None: + with self.catch_sqlalchemy_exception(): + await session.commit() + + def order_by(self, statement: "Select", ordering: "List[Tuple[List[str], bool]]") -> "Select": + ... # pragma: no cover + + async def get_by_id( + self, session: "AsyncSession", id: "Union[UUID4, int]" # pylint: disable=[redefined-builtin] + ) -> "Optional[DatabaseModelType]": + ... # pragma: no cover + + async def get_one_or_none(self, session: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": + ... # pragma: no cover + + async def list(self, session: "AsyncSession", statement: "Select") -> "List[DatabaseModelType]": + ... # pragma: no cover + + async def create(self, session: "AsyncSession", db_object: "DatabaseModelType") -> "DatabaseModelType": + ... # pragma: no cover + + async def update(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: + ... # pragma: no cover + + async def delete(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: + ... # pragma: no cover + + +class ExpiresAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithExpiresAtType]): + model: Type[DatabaseModelWithExpiresAtType] + + async def delete_expired(self, session: "AsyncSession") -> None: + ... # pragma: no cover + + +class CreatedUpdatedAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithCreatedUpdatedAtType]): + model: Type[DatabaseModelWithCreatedUpdatedAtType] + + +class SlugRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSlugType]): + model: Type[DatabaseModelWithSlugType] + + async def get_by_slug( + self, + session: "AsyncSession", + slug: str, + ) -> Optional[DatabaseModelWithSlugType]: + ... # pragma: no cover + + +class SoftDeleteRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSoftDeleteType]): + model: Type[DatabaseModelWithSoftDeleteType] + + +class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): + """Base SQL Alchemy repository.""" + + def __init__( + self, + model: Type[DatabaseModelType], + ): + """ + CRUD object with default methods to create, read, update, delete (CRUD). + + # Parameters + + * `model`: A SQLAlchemy model class + """ + self.model = model + + async def count(self, session: "AsyncSession", statement: "Select") -> int: + count_statement = statement.with_only_columns( # type: ignore[call-overload] + [sql_func.count()], + maintain_column_froms=True, + ).order_by(None) + results = await self.execute(session, count_statement) + return results.scalar_one() # type: ignore + + async def paginate( + self, session: "AsyncSession", statement: "Select", limit: int = 10, offset: int = 0 + ) -> Tuple[List[DatabaseModelType], int]: + paginated_statement = statement.offset(offset).limit(limit) + + [count, results] = await asyncio.gather( + self.count(session, statement), self.execute(session, paginated_statement) + ) + + return [result[0] for result in results.unique().all()], count + + def order_by( # noqa: C901 + self, + statement: "Select", + ordering: "List[Tuple[List[str], bool]]", + ) -> "Select": + for (accessors, is_desc) in ordering: + field: InstrumentedAttribute + # Local field + if len(accessors) == 1: + try: + field = getattr(self.model, accessors[0]) + statement = statement.order_by(field.desc() if is_desc else field.asc()) + except AttributeError: + pass + # Relationship field + else: + valid_field = True + model = self.model + for accessor in accessors: + try: + field = getattr(model, accessor) + if isinstance(field.prop, RelationshipProperty): + if field.prop.lazy != "joined": + statement = statement.join(field) + model = field.prop.entity.class_ + except AttributeError: + valid_field = False + break + if valid_field: + statement = statement.order_by(field.desc() if is_desc else field.asc()) + return statement + + async def get_one_or_none(self, session: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": + statement.execution_options(populate_existing=True) + results = await self.execute(session, statement) + db_object = results.first() + if db_object is None: + return None + return cast("DatabaseModelType", db_object[0]) + + async def get_by_id( + self, + session: "AsyncSession", + id: "Union[int, UUID4]", # pylint: disable=[redefined-builtin] + options: "Optional[List[Any]]" = None, + ) -> Optional[DatabaseModelType]: + """_summary_ + + Args: + id (Union[int, UUID4]): _description_ + db (AsyncSession, optional): _description_. Defaults to AsyncSession(). + options (Optional[list], optional): _description_. Defaults to None. + + Returns: + Optional[DatabaseModel]: _description_ + """ + options = options or [] + statement = ( + select(self.model).where(self.model.id == id).options(*options).execution_options(populate_existing=True) + ) + + return await self.get_one_or_none(session, statement) + + async def list(self, session: "AsyncSession", statement: Optional[Select] = None) -> "List[DatabaseModelType]": + if statement is None: + statement = select(self.model).execution_options(populate_existing=True) + results = await self.execute(session, statement) + return [result[0] for result in results.unique().all()] + + async def create( + self, + session: "AsyncSession", + db_object: "DatabaseModelType", + commit: bool = True, + ) -> "DatabaseModelType": + session.add(instance=db_object) + if commit: + await self.commit(session) + await self.refresh(session, db_object) + return db_object + + async def create_many( + self, + session: "AsyncSession", + db_objects: "List[DatabaseModelType]", + commit: bool = True, + ) -> "List[DatabaseModelType]": + """Create Many""" + for db_object in db_objects: + session.add(instance=db_object) + if commit: + await self.commit(session) + return db_objects + + @staticmethod + def update_model(model: T, data: abc.Mapping[str, Any]) -> T: + """ + Simple helper for setting key/values from `data` as attributes on `model`. + + Parameters + ---------- + model : T + Model instance to be updated. + data : Mapping[str, Any] + Mapping of data to set as key/value pairs on `model`. + + Returns + ------- + T + Key/value pairs from `data` have been set on the model. + """ + for k, v in data.items(): + setattr(model, k, v) + return model + + async def update(self, session: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: + session.add(db_object) + if commit: + await self.commit(session) + await self.refresh(session, db_object) + + async def delete(self, session: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: + with self.catch_sqlalchemy_exception(): + await session.delete(db_object) + if commit: + await self.commit(session) + + async def refresh(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: + with self.catch_sqlalchemy_exception(): + await session.refresh(db_object) + + async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: "Any") -> "Result[Any]": + """ + Execute `statement` with [`self.session`][starlite_lib.repository.Base.session]. + + Parameters + ---------- + statement : Executable + Any SQLAlchemy executable type. + **kwargs : Any + Passed as kwargs to [`self.session.execute()`][sqlalchemy.ext.asyncio.AsyncSession.execute] + + Returns + ------- + Result + A set of database results. + """ + with self.catch_sqlalchemy_exception(): + return await session.execute(statement, **kwargs) + + +class SlugRepositoryMixin(SlugRepositoryProtocol, Generic[DatabaseModelWithSlugType]): + """Slug Repository Mixin.""" + + async def get_by_slug( + self, + session: "AsyncSession", + slug: str, + options: "Optional[List[Any]]" = None, + ) -> "Optional[DatabaseModelWithSlugType]": + options = options or [] + statement = ( + select(self.model) + .where(self.model.slug == slug) + .options(*options) + .execution_options(populate_existing=True) + ) + + return await self.get_one_or_none(session, statement) + + async def get_available_slug( + self, + session: "AsyncSession", + value_to_slugify: str, + ) -> str: + slug = slugify(value_to_slugify) + if await self._is_slug_unique(session, slug): + return slug + random_string = "".join(random.choices(string.ascii_lowercase + string.digits, k=4)) # nosec + return f"{slug}-{random_string}" + + async def _is_slug_unique( + self, + session: "AsyncSession", + slug: str, + ) -> bool: + statement = select(self.model.slug).where(self.model.slug == slug) + return await self.get_one_or_none(session, statement) is None + + +class ExpiresAtMixin(ExpiresAtRepositoryProtocol, Generic[DatabaseModelWithExpiresAtType]): + async def delete_expired(self, session: "AsyncSession") -> None: + statement = delete(self.model).where(self.model.expires_at < datetime.now(timezone.utc)) + await self.execute(session, statement) diff --git a/src/pyspa/repositories/team.py b/src/pyspa/repositories/team.py new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/repositories/user.py b/src/pyspa/repositories/user.py new file mode 100644 index 00000000..8aa0cb82 --- /dev/null +++ b/src/pyspa/repositories/user.py @@ -0,0 +1,21 @@ +from typing import TYPE_CHECKING, Any, List, Optional + +from sqlalchemy import select + +from pyspa import models +from pyspa.repositories.base import BaseRepository + +if TYPE_CHECKING: + from sqlalchemy.ext.asyncio import AsyncSession + + +class UserRepository(BaseRepository[models.User]): + async def get_by_email( + self, db: "AsyncSession", email: str, options: Optional[List[Any]] = None + ) -> models.User | None: + options = options if options else [] + statement = select(self.model).where(self.model.email == email).options(*options) + return await self.get_one_or_none(db, statement) + + +user = UserRepository(model=models.User) diff --git a/src/pyspa/routes/__init__.py b/src/pyspa/routes/__init__.py deleted file mode 100644 index 576a4615..00000000 --- a/src/pyspa/routes/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .health_check import health_check - -__all__ = ["health_check"] diff --git a/src/pyspa/routes/health_check.py b/src/pyspa/routes/health_check.py deleted file mode 100644 index a2087b3a..00000000 --- a/src/pyspa/routes/health_check.py +++ /dev/null @@ -1,9 +0,0 @@ -from starlite import MediaType, get - -from pyspa.config import settings - - -@get(path="/health", media_type=MediaType.JSON, cache=False, tags=["Misc"]) -async def health_check() -> dict[str, str]: - """Health check handler""" - return {"app": settings.app.NAME, "build": settings.app.BUILD_NUMBER} diff --git a/src/pyspa/schemas/__init__.py b/src/pyspa/schemas/__init__.py new file mode 100644 index 00000000..76fbad6b --- /dev/null +++ b/src/pyspa/schemas/__init__.py @@ -0,0 +1,42 @@ +from pyspa.schemas.base import BaseSchema, CamelizedBaseSchema +from pyspa.schemas.health import SystemHealth +from pyspa.schemas.message import Message +from pyspa.schemas.user import ( + User, + UserCreate, + UserLogin, + UserPasswordConfirm, + UserPasswordUpdate, + UserSignup, + UserUpdate, + UserWorkspace, +) +from pyspa.schemas.workspace import ( + WorkspaceInvitation, + WorkspaceInvitationCreate, + WorkspaceInvitationUpdate, + WorkspaceMember, + WorkspaceMemberCreate, + WorkspaceMemberUpdate, +) + +__all__ = [ + "BaseSchema", + "CamelizedBaseSchema", + "Message", + "SystemHealth", + "User", + "UserCreate", + "UserLogin", + "UserPasswordConfirm", + "UserPasswordUpdate", + "UserSignup", + "UserUpdate", + "UserWorkspace", + "WorkspaceInvitation", + "WorkspaceInvitationCreate", + "WorkspaceInvitationUpdate", + "WorkspaceMember", + "WorkspaceMemberCreate", + "WorkspaceMemberUpdate", +] diff --git a/src/pyspa/schemas/base.py b/src/pyspa/schemas/base.py new file mode 100644 index 00000000..b7061fa1 --- /dev/null +++ b/src/pyspa/schemas/base.py @@ -0,0 +1,46 @@ +from datetime import datetime +from enum import Enum, EnumMeta + +from pydantic import BaseModel as _BaseSchema +from pydantic import SecretBytes, SecretStr + +from pyspa.utils import serializers + +__all__ = ["BaseSchema", "CamelizedBaseSchema"] + + +class BaseSchema(_BaseSchema): + """ + Base schema model for input deserialization and validation, and output serialization. + + Attributes + ---------- + created : datetime + Date/time of instance creation. Read-only attribute. + updated: datetime + Date/time of last instance update. Read-only attribute. + """ + + class Config: + + arbitrary_types_allowed = True + orm_mode = True + use_enum_values = True + json_loads = serializers.deserialize_object + json_dumps = serializers.serialize_object + arbitrary_types_allowed = True + json_encoders = { + datetime: serializers.convert_datetime_to_gmt, + SecretStr: lambda secret: secret.get_secret_value() if secret else None, + SecretBytes: lambda secret: secret.get_secret_value() if secret else None, + Enum: lambda enum: enum.value if enum else None, + EnumMeta: None, + } + + +class CamelizedBaseSchema(BaseSchema): + """Camelized Base pydantic schema""" + + class Config: + allow_population_by_field_name = True + alias_generator = serializers.convert_string_to_camel_case diff --git a/src/pyspa/schemas/health.py b/src/pyspa/schemas/health.py new file mode 100644 index 00000000..05365ce7 --- /dev/null +++ b/src/pyspa/schemas/health.py @@ -0,0 +1,24 @@ +from pyspa.config import settings +from pyspa.schemas.base import CamelizedBaseSchema + + +class SystemHealth(CamelizedBaseSchema): + """ + Health check response schema. + """ + + app: str + version: str + status: str + database_status: str + + class Config: + """ + Schema configuration. + """ + + schema_extra = { + "app": settings.app.NAME, + "version": settings.app.BUILD_NUMBER, + "status": "ok", + } diff --git a/src/pyspa/schemas/message.py b/src/pyspa/schemas/message.py new file mode 100644 index 00000000..01135d77 --- /dev/null +++ b/src/pyspa/schemas/message.py @@ -0,0 +1,5 @@ +from pyspa.schemas.base import CamelizedBaseSchema + + +class Message(CamelizedBaseSchema): + message: str diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py new file mode 100644 index 00000000..420a188b --- /dev/null +++ b/src/pyspa/schemas/team.py @@ -0,0 +1,88 @@ +# Standard Library +import uuid +from typing import Any, Optional, cast + +from pydantic import UUID4, EmailStr, Field + +from pyspa import models +from pyspa.schemas.base import CamelizedBaseSchema + +# ################################# +# +# Workspace Member +# +# ################################# + + +# Properties to receive via API on creation +class WorkspaceMemberCreate(CamelizedBaseSchema): + user_id: UUID4 + role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER + + +# Properties to receive via API on update +class WorkspaceMemberUpdate(CamelizedBaseSchema): + role: Optional[models.WorkspaceRoleTypes] = models.WorkspaceRoleTypes.MEMBER + is_owner: Optional[bool] = False + + +# Additional properties to return via API +class WorkspaceMember(CamelizedBaseSchema): + id: UUID4 = Field(default_factory=uuid.uuid4) + email: EmailStr + full_name: Optional[str] + role: Optional[models.WorkspaceRoleTypes] = models.WorkspaceRoleTypes.MEMBER + is_owner: Optional[bool] = False + + class Config: + orm_mode = True + + @classmethod + def from_orm(cls, obj: Any) -> "WorkspaceMember": + """ + Format organization details for the User object + + The relation for a user to an organ is 1 to many (org can have many users, + user can belong to a single org) + """ + # `obj` is the orm model instance + if getattr(obj, "member"): + member = cast("models.User", obj.member) + obj.full_name = member.full_name + obj.email = member.email + obj.id = member.id + return super().from_orm(obj) + + +# ################################# +# +# Invitation +# +# ################################# +# Shared properties + + +# Properties to receive via API on creation +class WorkspaceInvitationCreate(CamelizedBaseSchema): + workspace_id: UUID4 + role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER + email: EmailStr + user_id: UUID4 + + +# Properties to receive via API on update +class WorkspaceInvitationUpdate(CamelizedBaseSchema): + workspace_id: UUID4 + role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER + email: EmailStr + is_accepted: bool + + +# Additional properties to return via API +class WorkspaceInvitation(CamelizedBaseSchema): + id: UUID4 = Field(default_factory=uuid.uuid4) + workspace_id: UUID4 + email: EmailStr + role: models.WorkspaceRoleTypes + user_id: UUID4 + is_accepted: bool diff --git a/src/pyspa/schemas/user.py b/src/pyspa/schemas/user.py new file mode 100644 index 00000000..0ab3756b --- /dev/null +++ b/src/pyspa/schemas/user.py @@ -0,0 +1,119 @@ +# Standard Library +from typing import Any, Dict, List, Optional + +from pydantic import UUID4, EmailStr, root_validator +from pydantic.types import SecretStr + +from pyspa import models +from pyspa.schemas.base import CamelizedBaseSchema + + +class User(CamelizedBaseSchema): + """User properties to use for a response""" + + id: UUID4 + email: EmailStr + full_name: Optional[str] + is_superuser: bool + is_active: bool + is_verified: bool + workspace_count: Optional[int] = 0 + workspaces: Optional[List["UserWorkspace"]] = [] + + @classmethod + def from_orm(cls, obj: Any) -> "User": + """Appends additional data from nested tables to the user object""" + if getattr(obj, "workspaces", None): + obj.workspace_count = len(obj.workspaces) + return super().from_orm(obj) + + +class UserWorkspace(CamelizedBaseSchema): + """Holds workspaces details for a user + + This is nested in the User Model for 'workspace' + """ + + workspace_id: "Optional[UUID4]" = None + name: "Optional[str]" = None + is_owner: "Optional[bool]" = False + role: "Optional[models.WorkspaceRoleTypes]" = models.WorkspaceRoleTypes.MEMBER + + @classmethod + def from_orm(cls, obj: Any) -> "UserWorkspace": + """Flatten workspace details to the user membership object""" + if getattr(obj, "workspace", None) and getattr(obj.workspace, "name", None): + obj.name = obj.workspace.name + return super().from_orm(obj) + + +class UserSignup(CamelizedBaseSchema): + email: EmailStr + password: SecretStr + full_name: Optional[str] = None + workspace_name: Optional[str] = None + invitation_id: Optional[int] = None + + @root_validator(pre=True) + def workspace_or_invitation_but_not_both(cls, values: Dict[str, Any]) -> Dict[str, Any]: + if values.get("workspace_name", None) and values.get("invitation_id", None): + raise ValueError( + "Unable to accept invitation and create a default workspace", + ) + return values + + +class UserLogin(CamelizedBaseSchema): + """Properties required to log in""" + + username: str + password: SecretStr + + +class UserPasswordUpdate(CamelizedBaseSchema): + """Properties to receive for user updates""" + + current_password: SecretStr + new_password: SecretStr + + +class UserPasswordConfirm(CamelizedBaseSchema): + """Properties to receive for user updates""" + + password: SecretStr + + +# Properties to receive via API on creation +class UserCreate(CamelizedBaseSchema): + """User Create Properties""" + + email: EmailStr + hashed_password: SecretStr + full_name: Optional[str] = None + workspace_name: Optional[str] = None + invitation_id: Optional[int] = None + is_superuser: Optional[bool] = False + is_active: Optional[bool] = True + is_verified: Optional[bool] = False + + @root_validator(pre=True) + def workspace_or_invitation_but_not_both(cls, values: Dict[str, Any]) -> Dict[str, Any]: + if values.get("workspace_name", None) and values.get("invitation_id", None): + raise ValueError( + "Unable to accept invitation and create a default workspace", + ) + return values + + +# Properties to receive via API on update +class UserUpdate(CamelizedBaseSchema): + """Properties to receive for user updates""" + + email: Optional[EmailStr] = None + full_name: Optional[str] = None + is_superuser: Optional[bool] = False + is_active: Optional[bool] = False + is_verified: Optional[bool] = False + + +User.update_forward_refs() diff --git a/src/pyspa/services/__init__.py b/src/pyspa/services/__init__.py new file mode 100644 index 00000000..ec5e7e06 --- /dev/null +++ b/src/pyspa/services/__init__.py @@ -0,0 +1,3 @@ +from pyspa.services.user import UserService, user + +__all__ = ["user", "UserService"] diff --git a/src/pyspa/services/base.py b/src/pyspa/services/base.py new file mode 100644 index 00000000..a1215cf9 --- /dev/null +++ b/src/pyspa/services/base.py @@ -0,0 +1,239 @@ +# Standard Library +from enum import Enum +from typing import TYPE_CHECKING, Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union + +from pydantic.generics import GenericModel +from sqlalchemy import select + +from pyspa import models, repositories, schemas + +ModelType = TypeVar("ModelType", bound=models.BaseModel) +RepositoryType = TypeVar("RepositoryType", bound=repositories.BaseRepository) +CreateSchemaType = TypeVar("CreateSchemaType", bound=schemas.BaseSchema) +UpdateSchemaType = TypeVar("UpdateSchemaType", bound=schemas.BaseSchema) +SchemaType = TypeVar("SchemaType", bound=schemas.BaseSchema) + +if TYPE_CHECKING: + from sqlalchemy.ext.asyncio import AsyncSession + + +class TableSortOrder(str, Enum): + ASCENDING = "asc" + DESCENDING = "desc" + + +class TablePageSize(str, Enum): + TEN = 10 + TWENTY_FIVE = 25 + FIFTY = 50 + + +class TotaledResults(GenericModel, Generic[SchemaType]): + """Provides count and result of result set""" + + count: int + results: List[SchemaType] + + +class PaginatedResults(GenericModel, Generic[SchemaType]): + """Provides count, result, and page information of result set""" + + count: int + limit: int + skip: int + results: List[SchemaType] + + +class DataAccessServiceException(Exception): + """Base Data access exception type.""" + + +class DataAccessService(Generic[ModelType, RepositoryType, CreateSchemaType, UpdateSchemaType]): + """Base class for all Database CRUD operations. + + This class is used to provide a common interface for all CRUD operations. + """ + + def __init__( + self, + model: Type[ModelType], + repository: Type[RepositoryType], + default_options: Optional[List[Any]] = None, + ) -> None: + """ + CRUD object with default methods to create, read, update, delete (CRUD). + + # Parameters + + * `model`: A SQLAlchemy model class + * `schema`: A Pydantic model (schema) class + """ + self.model = model + self.repository = repository(model=model) + self.default_options = default_options if default_options else [] + + async def get_by_id(self, db: "AsyncSession", id: int, options: Optional[List[Any]] = None) -> Optional[ModelType]: + """ + Obtain model instance by `identifier`. + + Args: + id: The identifier of the model instance. + db: The database session. + Returns: + Returns `None` on unsuccessful search`. + """ + options = options if options else self.default_options + db_obj = await self.repository.get_by_id(db, id, options) + return db_obj or None + + async def get( + self, db: "AsyncSession", *args: Any, options: Optional[List[Any]] = None, **kwargs: Any + ) -> Optional[SchemaType]: + """ + Obtain a list of model instances + + List starts at offset `skip` and contains a + maximum of `limit` number of elements. + + Args: + skip: The offset of the list. + limit: The maximum number of elements in the list. + db: The database session. + Returns: + Returns a paginated response + """ + options = options if options else self.default_options + statement = ( + select(self.model) + .filter(*args) + .filter_by(**kwargs) + .options(*options) + .execution_options(populate_existing=True) + ) # this is important! + db_obj = await self.repository.get_one_or_none(db, statement) + return db_obj or None + + async def get_multi( + self, + db: "AsyncSession", + *args: Any, + skip: int = 0, + limit: int = 100, + options: Optional[List[Any]] = None, + **kwargs: Any, + ) -> Tuple[List[ModelType], int]: + """ + Obtain a list of model instances + + List starts at offset `skip` and contains a + maximum of `limit` number of elements. + + Args: + skip: The offset of the list. + limit: The maximum number of elements in the list. + db: The database session. + Returns: + Returns a paginated response + """ + options = options if options else self.default_options + + sort = kwargs.pop("sort", None) + order = kwargs.pop("order", None) + sort_by = sort if sort else TableSortOrder.DESCENDING + order_by = self.model.id # default to PK + if order and getattr(self.model, order, None): + order_by = getattr(self.model, order, order_by) + if sort_by == TableSortOrder.ASCENDING: + order_by = order_by.asc() # type: ignore[assignment] + elif sort_by == TableSortOrder.DESCENDING: + order_by = order_by.desc() # type: ignore[assignment] + statement = ( + select(self.model) + .filter(*args) + .filter_by(**kwargs) + .offset(skip) + .limit(limit) + .order_by(order_by) + .options(*options) + .execution_options(populate_existing=True) + ) # this is important! + results, count = await self.repository.paginate(db, statement, limit, skip) + return results, count + + async def list( + self, db: "AsyncSession", *args: Any, options: Optional[List[Any]] = None, **kwargs: Any + ) -> List[ModelType]: + """ + Obtain a list of model instances + + Returns all elements as a list. No pagination + + Args: + skip: The offset of the list. + limit: The maximum number of elements in the list. + db: The database session. + Returns: + Returns a paginated response + """ + options = options if options else self.default_options + + statement = ( + select(self.model) + .filter(*args) + .filter_by(**kwargs) + .options(*options) + .execution_options(populate_existing=True) + ) # this is important! + results = await self.repository.list(db, statement) + return results + + async def create(self, db: "AsyncSession", obj_in: CreateSchemaType) -> ModelType: + """Create an instance of the model and insert it into the database. + + Args: + db: The database session. + obj_in: The object to create. + + Returns: + The created object. + + """ + obj_in_data = obj_in.dict(exclude_unset=True, by_alias=False, exclude_none=True) + db_obj = self.model(**obj_in_data) + await self.repository.create(db, db_obj) + return db_obj + + async def update( + self, db: "AsyncSession", db_obj: ModelType, obj_in: Union[UpdateSchemaType, Dict[str, Any]] + ) -> ModelType: + """ + Update model instance `db_obj` with fields and values specified by `obj_in`. + + Args: + db: The database session. + db_obj: The object to update. + obj_in: The object to update with. + Returns: + The updated object. + + """ + update_data = obj_in if isinstance(obj_in, dict) else obj_in.dict(exclude_unset=True, by_alias=False) + for field in db_obj.dict(): + if field in update_data: + setattr(db_obj, field, update_data.get(field)) + await self.repository.update(db, db_obj) + return db_obj + + async def remove(self, db: "AsyncSession", id: int) -> Optional[ModelType]: + """Delete model instance by `identifier`. + + Args: + db: The database session. + id: The identifier of the model instance. + Returns: + The deleted object. + """ + db_obj = await self.repository.get_by_id(db, id) + if db_obj: + await self.repository.delete(db, db_obj) + return db_obj or None diff --git a/src/pyspa/services/health.py b/src/pyspa/services/health.py new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py new file mode 100644 index 00000000..15038e50 --- /dev/null +++ b/src/pyspa/services/user.py @@ -0,0 +1,122 @@ +from typing import TYPE_CHECKING, Optional + +from sqlalchemy import orm, select + +from pyspa import models, repositories, schemas +from pyspa.core import security +from pyspa.services.base import DataAccessService, DataAccessServiceException + +if TYPE_CHECKING: + from pydantic import UUID4, SecretStr + from sqlalchemy.ext.asyncio import AsyncSession + + +class UserServiceException(DataAccessServiceException): + """_summary_""" + + +class UserNotFoundException(UserServiceException): + """_summary_""" + + +class UserLoginFailedException(UserServiceException): + """_summary_""" + + +class UserInactiveException(UserServiceException): + """_summary_""" + + +class UserPasswordVerifyException(UserServiceException): + """_summary_""" + + +class UserService(DataAccessService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate]): + """Handles database operations for users""" + + async def exists(self, db: "AsyncSession", username: str) -> bool: + statement = select(self.model.id).where(self.model.email == username) + return await self.repository.get_one_or_none(db, statement) is not None + + async def authenticate(self, db: "AsyncSession", username: str, password: "SecretStr") -> models.User: + """Authenticates a user + + Args: + db: Database session + username: User email + password: password + Returns: + User object + """ + user_obj = await self.repository.get_by_email(db, email=username) + if user_obj is None: + raise UserNotFoundException + if not await security.verify_password(password, user_obj.hashed_password): + raise UserLoginFailedException + if not user_obj.is_active: + raise UserInactiveException + return user_obj + + async def update_password( + self, db: "AsyncSession", obj_in: "schemas.UserPasswordUpdate", db_obj: "models.User" + ) -> None: + if not await security.verify_password(obj_in.current_password, db_obj.hashed_password): + raise UserPasswordVerifyException + if not self.is_active(db_obj): + raise UserInactiveException + db_obj.hashed_password = await security.get_password_hash(obj_in.new_password) + await self.repository.update(db, db_obj) + + async def get_by_username(self, db: "AsyncSession", username: str) -> "Optional[models.User]": + """Find a user by their email + + Args: + db: Database session + email: User email + + Returns: + User object + """ + db_obj = await self.repository.get_by_email(email=username, db=db) + return db_obj or None + + @staticmethod + def is_verified(db_obj: "models.User") -> bool: + """Returns true if the user is verified""" + return db_obj.is_verified + + @staticmethod + def is_active(db_obj: "models.User") -> bool: + """Returns true if the user is active""" + return db_obj.is_active + + @staticmethod + def is_superuser(db_obj: "models.User") -> bool: + """Returns true if the user is a superuser""" + return db_obj.is_superuser + + @staticmethod + def is_workspace_member(db_obj: "models.User", workspace_id: "UUID4") -> bool: + """Returns true if the user is a member of the workspace""" + return any(membership.workspace.id == workspace_id for membership in db_obj.workspaces) + + @staticmethod + def is_workspace_admin(db_obj: "models.User", workspace_id: "UUID4") -> bool: + """Returns true if the user is an admin of the workspace""" + return any( + membership.workspace.id == workspace_id and membership.role == models.WorkspaceRoleTypes.ADMIN + for membership in db_obj.workspaces + ) + + +user = UserService( + model=models.User, + repository=repositories.UserRepository, + default_options=[ + orm.subqueryload(models.User.workspaces).options( + orm.joinedload(models.WorkspaceMember.workspace, innerjoin=True).options( + orm.noload("*"), + ), + ), + ], +) diff --git a/src/pyspa/utils/__init__.py b/src/pyspa/utils/__init__.py new file mode 100644 index 00000000..544bcbd2 --- /dev/null +++ b/src/pyspa/utils/__init__.py @@ -0,0 +1,12 @@ +from pyspa.utils import asyncer, db, gcp, import_tools, log, serializers, text, wsgi + +__all__ = [ + "db", + "gcp", + "asyncer", + "log", + "import_tools", + "text", + "serializers", + "wsgi", +] diff --git a/src/pyspa/utils/asyncer.py b/src/pyspa/utils/asyncer.py new file mode 100644 index 00000000..2c60ab5b --- /dev/null +++ b/src/pyspa/utils/asyncer.py @@ -0,0 +1,452 @@ +""" +Asyncer v0.0.1 +The MIT License (MIT) + +Copyright (c) 2022 Sebastián Ramírez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" +import functools +import multiprocessing +import os +import platform +import sys +from contextlib import suppress +from typing import Any, Awaitable, Callable, Coroutine, Generic, Optional, TypeVar, Union + +import anyio +from anyio._core._eventloop import get_asynclib, threadlocals +from anyio.abc import TaskGroup as _TaskGroup + +if sys.version_info >= (3, 10): + # Standard Library + from typing import ParamSpec +else: + from typing_extensions import ParamSpec + + +T_Retval = TypeVar("T_Retval") # pylint: disable=[invalid-name] +T_ParamSpec = ParamSpec("T_ParamSpec") # pylint: disable=[invalid-name] +T = TypeVar("T") + + +class PendingType: + def __repr__(self) -> str: + return "AsyncerPending" + + +Pending = PendingType() + + +class PendingValueException(Exception): + """Pending Value Exception""" + + +class SoonValue(Generic[T]): + """Soon Value + + Args: + Generic (_type_): _description_ + """ + + def __init__(self) -> None: + self._stored_value: Union[T, PendingType] = Pending + + @property + def value(self) -> T: + """Return value from task + + Raises: + PendingValueException: _description_ + + Returns: + T: _description_ + """ + if isinstance(self._stored_value, PendingType): + raise PendingValueException( + "The return value of this task is still pending. Maybe you forgot to " + "access it after the async with asyncer.create_task_group() block. " + "If you need to access values of async tasks inside the same task " + "group, you probably need a different approach, for example with " + "AnyIO Streams.", + ) + return self._stored_value + + @property + def ready(self) -> bool: + return not isinstance(self._stored_value, PendingType) + + +class TaskGroup(_TaskGroup): + """Task Group + + Args: + _TaskGroup (_type_): _description_ + """ + + def run_soon( + self, + async_function: Callable[T_ParamSpec, Awaitable[T]], + name: object = None, + ) -> Callable[T_ParamSpec, SoonValue[T]]: + """ + Create and return a function that when called will start a new task in this + task group. + + Internally it uses the same `task_group.start_soon()` method. But + `task_group.run_soon()` supports keyword arguments additional to positional + arguments and it adds better support for autocompletion and inline errors + for the arguments of the function called. + + Use it like this: + + ```Python + async with asyncer.create_task_group() as task_group: + async def do_work(arg1, arg2, kwarg1="", kwarg2="") -> str: + # Do work + return "Some result value" + + result = task_group.run_soon(do_work)("spam", "ham", kwarg1="a", kwarg2="b") + + print(result.value) + ``` + + The return value from that function (`result` in the example) is an object + `SoonValue`. + + This `SoonValue` object has an attribute `soon_value.value` that will hold the + return value of the original `async_function` *after* the `async with` block. + + If you try to access the `soon_value.value` inside the `async with` block, + before it has the actual return value, it will raise a an exception + `asyncer.PendingValueException`. + + If you think you need to access the return values inside the `async with` block, + there's a high chance that you really need a different approach, for example + using an AnyIO Stream. + + But either way, if you have checkpoints inside the `async with` block (you have + some `await` there), one or more of the `SoonValue` objects you might have + could end up having the result value ready before ending the `async with` block. + You can check that with `soon_value.pending`. For example: + + ```Python + async def do_work(name: str) -> str: + return f"Hello {name}" + + async with asyncer.create_task_group() as task_group: + result1 = task_group.run_soon(do_work)(name="task 1") + result2 = task_group.run_soon(do_work)(name="task 2") + await anyio.sleep(0) + if not result1.pending: + print(result1.value) + if not result2.pending: + print(result2.value) + ``` + + + ## Arguments + + `async_function`: an async function to call soon + `name`: name of the task, for the purposes of introspection and debugging + + ## Return + + A function that takes positional and keyword arguments and when called + uses `task_group.start_soon()` to start the task in this task group. + + That function returns a `SoonValue` object holding the return value of the + original function in `soon_value.value`. + """ + + @functools.wraps(async_function) + def wrapper(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> SoonValue[T]: + partial_f = functools.partial(async_function, *args, **kwargs) + soon_value: SoonValue[T] = SoonValue() + + @functools.wraps(partial_f) + async def value_wrapper() -> None: + value = await partial_f() + soon_value._stored_value = value # pylint: disable=[protected-access] + + self.start_soon(value_wrapper, name=name) + return soon_value + + return wrapper + + # This is only for the return type annotation, but it won't really be called + async def __aenter__(self) -> "TaskGroup": # pragma: nocover + """Enter the task group context and allow starting new tasks.""" + return await super().__aenter__() # type: ignore + + +def create_task_group() -> "TaskGroup": + """ + Create a task group used to start multiple concurrent tasks with async functions. + + `asyncer.create_task_group()` is different from `anyio.create_task_group()` in that + it creates an extended `TaskGroup` object that includes the `task_group.run_soon()` + method. + """ + LibTaskGroup = get_asynclib().TaskGroup # pylint: disable=[invalid-name] + + class ExtendedTaskGroup(LibTaskGroup, TaskGroup): # type: ignore + pass + + return ExtendedTaskGroup() # pylint: disable=[abstract-class-instantiated] + + +def run( + async_function: Callable[T_ParamSpec, Coroutine[Any, Any, T_Retval]], + backend: str = "asyncio", + backend_options: Optional[dict[str, Any]] = None, +) -> Callable[T_ParamSpec, T_Retval]: + """ + Take an async function and create a regular (blocking) function that receives the + same keyword and positional arguments for the original async function, and that when + called will create an event loop and use it to run the original `async_function` + with those arguments. + + That function returns the return value from the original `async_function`. + + The current thread must not be already running an event loop. + + This calls `anyio.run()` underneath. + + Use it like this: + + ```Python + async def program(name: str) -> str: + return f"Hello {name}" + + + result = asyncer.run(program)(name="World") + print(result) + ``` + + ## Arguments + + `async_function`: an async function to call + `backend` name of the asynchronous event loop implementation - currently either + `asyncio` or `trio` + `backend_options` keyword arguments to call the backend `run()` implementation with + + ## Return + + The return value of the async function + + ## Raises + + `RuntimeError`: if an asynchronous event loop is already running in this thread + `LookupError`: if the named backend is not found + + """ + + @functools.wraps(async_function) + def wrapper(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> T_Retval: + partial_f = functools.partial(async_function, *args, **kwargs) + + return anyio.run(partial_f, backend=backend, backend_options=backend_options) + + return wrapper + + +def run_sync( + async_function: Callable[T_ParamSpec, Coroutine[Any, Any, T_Retval]], + raise_sync_error: bool = True, +) -> Callable[T_ParamSpec, T_Retval]: + """ + Take an async function and create a regular one that receives the same keyword and + positional arguments, and that when called, calls the original async function in + the main async loop from the worker thread using `anyio.to_thread.run()`. + + By default this is expected to be used from a worker thread. For example inside + some function passed to `run_async()`. + + But if you set `check_called_from_async` to `False`, you can also use this function + in a non-async context: without an async event loop. For example, from a + blocking/regular function called at the top level of a Python file. In that case, + if it is not being called from inside a worker thread started from an async context + (e.g. this is not called from a function that was called with `run_async()`) it will + run `async_function` in a new async event loop with `anyio.run()`. + + This functionality with `check_called_from_async` is there only to allow using + `run_sync()` in code bases that are used by async code in some cases and by blocking + code in others. For example, during migrations from blocking code to async code. + + Internally, `asyncer.run_sync()` uses the same `anyio.from_thread.run()`, but it + supports keyword arguments additional to positional arguments and it adds better + support for tooling (e.g. editor autocompletion and inline errors) for the + arguments and return value of the function. + + Use it like this: + + ```Python + async def do_work(arg1, arg2, kwarg1="", kwarg2=""): + # Do work + + result = from_thread.run_sync(do_work)("spam", "ham", kwarg1="a", kwarg2="b") + ``` + + ## Arguments + + `async_function`: an async function to be called in the main thread, in the async + event loop + `check_called_from_async`: If set to `False` + + ## Return + + A regular blocking function that takes the same positional and keyword arguments + as the original async one, that when called runs the same original function in + the main async loop when called from a worker thread and returns the result. + """ + + @functools.wraps(async_function) + def wrapper(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> T_Retval: + current_async_module = getattr(threadlocals, "current_async_module", None) + partial_f = functools.partial(async_function, *args, **kwargs) + if current_async_module is None and raise_sync_error is False: + return anyio.run(partial_f) + return anyio.from_thread.run(partial_f) + + return wrapper + + +def run_async( + function: Callable[T_ParamSpec, T_Retval], + *, + cancellable: bool = False, + limiter: Optional[anyio.CapacityLimiter] = None, +) -> Callable[T_ParamSpec, Awaitable[T_Retval]]: + """ + Take a blocking function and create an async one that receives the same + positional and keyword arguments, and that when called, calls the original function + in a worker thread using `anyio.to_thread.run_sync()`. Internally, + `asyncer.run_async()` uses the same `anyio.to_thread.run_sync()`, but it supports + keyword arguments additional to positional arguments and it adds better support for + autocompletion and inline errors for the arguments of the function called and the + return value. + + + If the `cancellable` option is enabled and the task waiting for its completion is + cancelled, the thread will still run its course but its return value (or any raised + exception) will be ignored. + + Use it like this: + + ```Python + def do_work(arg1, arg2, kwarg1="", kwarg2="") -> str: + # Do work + return "Some result" + + result = await to_thread.run_async(do_work)("spam", "ham", kwarg1="a", kwarg2="b") + print(result) + ``` + + ## Arguments + + `function`: a blocking regular callable (e.g. a function) + `cancellable`: `True` to allow cancellation of the operation + `limiter`: capacity limiter to use to limit the total amount of threads running + (if omitted, the default limiter is used) + + ## Return + + An async function that takes the same positional and keyword arguments as the + original one, that when called runs the same original function in a thread worker + and returns the result. + + """ + + async def wrapper(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> T_Retval: + partial_f = functools.partial(function, *args, **kwargs) + return await anyio.to_thread.run_sync(partial_f, cancellable=cancellable, limiter=limiter) + + return wrapper + + +async def concurrently_execute(coros: list[Awaitable], limit: int = 3) -> None: + """Like asyncio.gather but with a limit on concurrency. + using https://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore + + await concurrently_execute(*tasks, return_exceptions=True, limit=3) + """ + semaphore = anyio.Semaphore(limit) + + async def _concurrently_execute(coro: Awaitable) -> Any: + async with semaphore: + return await coro + + async with create_task_group() as tg: + for coro in coros: + tg.start_soon(_concurrently_execute, coro) + + +# check this link out: https://stackoverflow.com/a/58071119/627679 +def run_detached(func: Callable[T_ParamSpec, Any]) -> T_Retval: + """Decorate a function so that its calls are async in a detached process. + + Usage + ----- + + .. code:: + import time + + @run_detached + def f(message): + time.sleep(5) + print(message) + + f('Async and detached!!!') + or + run_detached(f)('Async and detached!!!') + + """ + # https://bugs.python.org/issue46871 + if platform.system() == "Darwin": + multiprocessing.set_start_method("fork", force=True) + + # create a process fork and run the function + def fork_process(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> T_Retval: + # check if we are the forked or calling process + # if os.fork() != 0: + # return + # remove + for fd in range(0, 1024): + with suppress(OSError): + os.close(fd) + return func(*args, **kwargs) # type: ignore + + # wrapper to run the forked function + def wrapper(*args: T_ParamSpec.args, **kwargs: T_ParamSpec.kwargs) -> T_Retval: + proc = multiprocessing.Process(target=lambda: fork_process(*args, **kwargs)) + proc.start() + return proc.join() # type: ignore + + return wrapper # type: ignore + + +__all__ = [ # noqa: WPS410 + "run", + "run_sync", + "run_async", + "create_task_group", + "run_detached", + "concurrently_execute", +] diff --git a/src/pyspa/utils/db/__init__.py b/src/pyspa/utils/db/__init__.py new file mode 100644 index 00000000..18208dc2 --- /dev/null +++ b/src/pyspa/utils/db/__init__.py @@ -0,0 +1,3 @@ +from . import db_ready + +__all__ = ["db_ready"] diff --git a/src/pyspa/utils/db/db_ready.py b/src/pyspa/utils/db/db_ready.py new file mode 100644 index 00000000..7fa8dbc1 --- /dev/null +++ b/src/pyspa/utils/db/db_ready.py @@ -0,0 +1,19 @@ +from typing import TYPE_CHECKING + +from sqlalchemy import text + +if TYPE_CHECKING: + from sqlalchemy.ext.asyncio import AsyncEngine + + +async def is_available(engine: "AsyncEngine") -> bool: + """ + Checks for database connectivity. + """ + try: + async with engine.begin() as conn: + await conn.execute(text("SELECT 1")) + except Exception: # pylint: disable=broad-except + return False + else: + return True diff --git a/src/pyspa/utils/import_tools.py b/src/pyspa/utils/import_tools.py new file mode 100644 index 00000000..3743aa40 --- /dev/null +++ b/src/pyspa/utils/import_tools.py @@ -0,0 +1,23 @@ +""" +All configuration is via environment variables. + +Take not of the environment variable prefixes required for each settings class, except +[`AppSettings`][starlite_bedrock.config.AppSettings]. +""" +import pkgutil +from functools import lru_cache +from importlib.machinery import SourceFileLoader +from pathlib import Path + + +@lru_cache +def module_to_os_path(dotted_path: str = "pyspa") -> Path: + """ + Returns the path to the base directory of the project or the module specified by `dotted_path`. + + Ensures that pkgutil returns a valid source file loader. + """ + src = pkgutil.get_loader(dotted_path) + if not isinstance(src, SourceFileLoader): + raise ValueError(f"Couldn't find the path for {dotted_path}") + return Path(str(src.path).removesuffix("/__init__.py")) diff --git a/src/pyspa/utils/log/__init__.py b/src/pyspa/utils/log/__init__.py new file mode 100644 index 00000000..6057e2e4 --- /dev/null +++ b/src/pyspa/utils/log/__init__.py @@ -0,0 +1,3 @@ +from . import extensions + +__all__ = ["extensions"] diff --git a/src/pyspa/utils/log/extensions.py b/src/pyspa/utils/log/extensions.py new file mode 100644 index 00000000..2774ced4 --- /dev/null +++ b/src/pyspa/utils/log/extensions.py @@ -0,0 +1,276 @@ +import logging +import re +from datetime import datetime +from pathlib import Path +from typing import TYPE_CHECKING, Any, ClassVar, Iterable, List, Optional, Type, Union + +import picologging +from rich import get_console +from rich._log_render import FormatTimeCallable, LogRender +from rich.highlighter import Highlighter, ReprHighlighter +from rich.text import Text +from rich.traceback import Traceback +from starlette.status import HTTP_200_OK + +if TYPE_CHECKING: + from types import ModuleType + + from rich.console import Console, ConsoleRenderable + + +class RichPicologgingHandler(picologging.Handler): # type: ignore + """A logging handler that renders output with Rich. The time / level / message and file are displayed in columns. + The level is color coded, and the message is syntax highlighted. + + Note: + Be careful when enabling console markup in log messages + if you have configured logging for libraries not + under your control. If a dependency writes messages containing square brackets, + it may not produce the intended output. + + Args: + level (Union[int, str], optional): Log level. Defaults to logging.NOTSET. + console (:class:`~rich.console.Console`, optional): Optional console instance to write logs. + Default will use a global console instance writing to stdout. + show_time (bool, optional): Show a column for the time. Defaults to True. + omit_repeated_times (bool, optional): Omit repetition of the same time. Defaults to True. + show_level (bool, optional): Show a column for the level. Defaults to True. + show_path (bool, optional): Show the path to the original log call. Defaults to True. + enable_link_path (bool, optional): Enable terminal link of path column to file. Defaults to True. + highlighter (Highlighter, optional): Highlighter to style log messages, + or None to use ReprHighlighter. Defaults to None. + markup (bool, optional): Enable console markup in log messages. Defaults to False. + rich_tracebacks (bool, optional): Enable rich tracebacks with syntax + highlighting and formatting. Defaults to False. + tracebacks_width (Optional[int], optional): Number of characters used to render + tracebacks, or None for full width. Defaults to None. + tracebacks_extra_lines (int, optional): Additional lines of code to render tracebacks, + or None for full width. Defaults to None. + tracebacks_theme (str, optional): Override pygments theme used in traceback. + tracebacks_word_wrap (bool, optional): Enable word wrapping of long tracebacks lines. Defaults to True. + tracebacks_show_locals (bool, optional): Enable display of locals in tracebacks. Defaults to False. + tracebacks_suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths + to exclude from traceback. + locals_max_length (int, optional): Maximum length of containers before abbreviating, + or None for no abbreviation. Defaults to 10. + locals_max_string (int, optional): Maximum length of string before truncating, + or None to disable. Defaults to 80. + log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` + is enabled, either string for strftime or callable that formats the time. Defaults to "[%x %X] ". + keywords (List[str], optional): List of words to highlight instead of ``RichHandler.KEYWORDS``. + """ + + KEYWORDS: ClassVar[Optional[List[str]]] = [ + "GET", + "POST", + "HEAD", + "PUT", + "DELETE", + "OPTIONS", + "TRACE", + "PATCH", + ] + HIGHLIGHTER_CLASS: ClassVar[Type[Highlighter]] = ReprHighlighter + + def __init__( + self, + level: "Union[int, str]" = picologging.NOTSET, + console: "Optional[Console]" = None, + *, + show_time: bool = True, + omit_repeated_times: bool = True, + show_level: bool = True, + show_path: bool = True, + enable_link_path: bool = True, + highlighter: "Optional[Highlighter]" = None, + markup: bool = False, + rich_tracebacks: bool = False, + tracebacks_width: Optional[int] = None, + tracebacks_extra_lines: int = 3, + tracebacks_theme: Optional[str] = None, + tracebacks_word_wrap: bool = True, + tracebacks_show_locals: bool = False, + tracebacks_suppress: "Iterable[Union[str, ModuleType]]" = (), + locals_max_length: int = 10, + locals_max_string: int = 80, + log_time_format: "Union[str, FormatTimeCallable]" = "[%x %X]", + keywords: "Optional[List[str]]" = None, + ) -> None: + super().__init__(level=level) + self.console = console or get_console() + self.highlighter = highlighter or self.HIGHLIGHTER_CLASS() + self._log_render = LogRender( + show_time=show_time, + show_level=show_level, + show_path=show_path, + time_format=log_time_format, + omit_repeated_times=omit_repeated_times, + level_width=None, + ) + self.enable_link_path = enable_link_path + self.markup = markup + self.rich_tracebacks = rich_tracebacks + self.tracebacks_width = tracebacks_width + self.tracebacks_extra_lines = tracebacks_extra_lines + self.tracebacks_theme = tracebacks_theme + self.tracebacks_word_wrap = tracebacks_word_wrap + self.tracebacks_show_locals = tracebacks_show_locals + self.tracebacks_suppress = tracebacks_suppress + self.locals_max_length = locals_max_length + self.locals_max_string = locals_max_string + self.keywords = keywords + + def get_level_text(self, record: picologging.LogRecord) -> "Text": + """Get the level name from the record. + + Args: + record (LogRecord): LogRecord instance. + + Returns: + Text: A tuple of the style and level name. + """ + level_name = record.levelname + level_text = Text.styled(level_name.ljust(8), f"picologging.level.{level_name.lower()}") + return level_text + + def emit(self, record: picologging.LogRecord) -> None: + """Invoked by logging.""" + message = self.format(record) + traceback = None + if self.rich_tracebacks and record.exc_info and record.exc_info != (None, None, None): + exc_type, exc_value, exc_traceback = record.exc_info + traceback = Traceback.from_exception( + exc_type, + exc_value, + exc_traceback, + width=self.tracebacks_width, + extra_lines=self.tracebacks_extra_lines, + theme=self.tracebacks_theme, + word_wrap=self.tracebacks_word_wrap, + show_locals=self.tracebacks_show_locals, + locals_max_length=self.locals_max_length, + locals_max_string=self.locals_max_string, + suppress=self.tracebacks_suppress, + ) + message = record.getMessage() + if self.formatter: + record.message = record.getMessage() + formatter = self.formatter + if hasattr(formatter, "usesTime") and formatter.usesTime(): + record.asctime = formatter.formatTime(record, formatter.datefmt) + message = formatter.formatMessage(record) + + message_renderable = self.render_message(record, message) + log_renderable = self.render(record=record, traceback=traceback, message_renderable=message_renderable) + try: + self.console.print(log_renderable) + except Exception: # pylint: disable=broad-except + self.handleError(record) + + def render_message(self, record: picologging.LogRecord, message: str) -> "ConsoleRenderable": + """Render message text in to Text. + + record (LogRecord): logging Record. + message (str): String containing log message. + + Returns: + ConsoleRenderable: Renderable to display log message. + """ + use_markup = getattr(record, "markup", self.markup) + message_text = Text.from_markup(message) if use_markup else Text(message) + + highlighter = getattr(record, "highlighter", self.highlighter) + if highlighter: + message_text = highlighter(message_text) + + if self.keywords is None: + self.keywords = self.KEYWORDS + + if self.keywords: + message_text.highlight_words(self.keywords, "logging.keyword") + + return message_text + + def render( + self, + *, + record: picologging.LogRecord, + traceback: "Optional[Traceback]", + message_renderable: "ConsoleRenderable", + ) -> "ConsoleRenderable": + """Render log for display. + + Args: + record (LogRecord): logging Record. + traceback (Optional[Traceback]): Traceback instance or None for no Traceback. + message_renderable (ConsoleRenderable): Renderable (typically Text) containing log message contents. + + Returns: + ConsoleRenderable: Renderable to display log. + """ + path = Path(record.pathname).name + level = self.get_level_text(record) + time_format = None if self.formatter is None else self.formatter.datefmt + log_time = datetime.fromtimestamp(record.created) + + log_renderable = self._log_render( + self.console, + [message_renderable] if not traceback else [message_renderable, traceback], + log_time=log_time, + time_format=time_format, + level=level, + path=path, + line_no=record.lineno, + link_path=record.pathname if self.enable_link_path else None, + ) + return log_renderable + + +class AccessLogFilter(logging.Filter): + """ + Filter for omitting log records from uvicorn access logs based on request path. + + Parameters + ---------- + *args : Any + Unpacked into [`logging.Filter.__init__()`][logging.Filter]. + path_re : str + Regex, paths matched are filtered. + **kwargs : Any + Unpacked into [`logging.Filter.__init__()`][logging.Filter]. + """ + + def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.path_filter = re.compile(path_re) + + def filter(self, record: picologging.LogRecord) -> bool: + *_, req_path, _, status_code = record.args + if self.path_filter.match(req_path) and status_code == HTTP_200_OK: + return False + return True + + +class PicologgingAccessLogFilter(picologging.Filter): # type: ignore + """ + Filter for omitting log records from uvicorn access logs based on request path. + + Parameters + ---------- + *args : Any + Unpacked into [`logging.Filter.__init__()`][logging.Filter]. + path_re : str + Regex, paths matched are filtered. + **kwargs : Any + Unpacked into [`logging.Filter.__init__()`][logging.Filter]. + """ + + def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.path_filter = re.compile(path_re) + + def filter(self, record: picologging.LogRecord) -> bool: + *_, req_path, _, status_code = record.args + if self.path_filter.match(req_path) and status_code == HTTP_200_OK: + return False + return True diff --git a/src/pyspa/utils/postgres_ready.py b/src/pyspa/utils/postgres_ready.py deleted file mode 100644 index f701ca6e..00000000 --- a/src/pyspa/utils/postgres_ready.py +++ /dev/null @@ -1,25 +0,0 @@ -import asyncio -import sys - -from sqlalchemy import text - -from pyspa.core.db import engine - - -async def c() -> None: - """ - Checks for database connectivity. - """ - try: - async with engine.begin() as conn: - await conn.execute(text("SELECT 1")) - except Exception as e: # pylint: disable=broad-except - print(f"Waiting for Postgres: {e}") # noqa: T201 - sys.exit(-1) - else: - print("Postgres OK!") # noqa: T201 - - -def main() -> None: - """Entrypoint""" - asyncio.run(c()) diff --git a/src/pyspa/utils/redis_ready.py b/src/pyspa/utils/redis_ready.py deleted file mode 100644 index 442df426..00000000 --- a/src/pyspa/utils/redis_ready.py +++ /dev/null @@ -1,27 +0,0 @@ -import asyncio -import sys - -from redis.asyncio import Redis - -from app.config import cache_settings - - -async def c() -> None: - """ - Checks for cache connectivity. - """ - redis = Redis.from_url(cache_settings.URL) - try: - await redis.ping() - except Exception as e: # pylint: disable=broad-except - print(f"Waiting for Redis: {e}") # noqa: T201 - sys.exit(-1) - else: - print("Redis OK!") # noqa: T201 - finally: - await redis.close() - - -def main() -> None: - """Entrypoint""" - asyncio.run(c()) diff --git a/src/pyspa/utils/restartable_worker.py b/src/pyspa/utils/restartable_worker.py deleted file mode 100644 index e5786824..00000000 --- a/src/pyspa/utils/restartable_worker.py +++ /dev/null @@ -1,101 +0,0 @@ -import asyncio -import os -import signal -import sys -import threading -import time -from typing import Any - -from gunicorn.app.base import Application -from gunicorn.arbiter import Arbiter -from uvicorn.main import Server -from uvicorn.workers import UvicornWorker - - -class ReloaderThread(threading.Thread): - def __init__(self, worker: UvicornWorker, sleep_interval: float = 1.0): - super().__init__() - self.daemon = True - self._worker = worker - self._interval = sleep_interval - - def run(self) -> None: - """ - Sends a KILL signal to the current process if the worker's active flag is set to - False. - """ - while True: - if not self._worker.alive: - os.kill(os.getpid(), signal.SIGINT) - time.sleep(self._interval) - - -class RestartableUvicornWorker(UvicornWorker): # type: ignore - """ - UvicornWorker with additional thread that sends a KILL signal to the current process - if the worker's active flag is set to False. - - attribution: https://github.com/benoitc/gunicorn/issues/2339#issuecomment-867481389 - """ - - CONFIG_KWARGS = {"loop": "uvloop", "http": "httptools", "lifespan": "auto"} - - def __init__(self, *args: list[Any], **kwargs: dict[str, Any]): - super().__init__(*args, **kwargs) - self._reloader_thread = ReloaderThread(self) - - def _install_sigquit_handler(self, server: Server) -> None: - """Workaround to install a SIGQUIT handler on workers. - Ref.: - - https://github.com/encode/uvicorn/issues/1116 - - https://github.com/benoitc/gunicorn/issues/2604 - """ - if threading.current_thread() is not threading.main_thread(): - # Signals can only be listened to from the main thread. - return - - loop = asyncio.get_running_loop() - loop.add_signal_handler(signal.SIGQUIT, self.handle_exit, signal.SIGQUIT, None) - - async def _serve(self) -> None: - self.config.app = self.wsgi - server = Server(config=self.config) - self._install_sigquit_handler(server) - await server.serve(sockets=self.sockets) - if not server.started: - sys.exit(Arbiter.WORKER_BOOT_ERROR) - - def run(self) -> None: - if self.cfg.reload: - self._reloader_thread.start() - super().run() - - -class ApplicationLoader(Application): # type: ignore - """Bootstraps the WSGI app""" - - def __init__(self, options: dict[str, str] | None = None): - self.options = options or {} - self.config_path = self.options.pop("config", None) - super().__init__() - - def init(self, parser, options, args) -> None: # type: ignore - """Class ApplicationLoader object constructor.""" - self.options = options - self.cfg.set("default_proc_name", args[0]) - - def load_config(self) -> None: - """Load config from passed options""" - if self.config_path: - self.load_config_from_file(self.config_path) - config = { - key: value - for key, value in self.options.items() - if key in self.cfg.settings and value is not None - } - for key, value in config.items(): - self.cfg.set(key.lower(), value) - - def load(self): - """Load application.""" - return get_app() diff --git a/src/pyspa/utils/serializers.py b/src/pyspa/utils/serializers.py new file mode 100644 index 00000000..503be64e --- /dev/null +++ b/src/pyspa/utils/serializers.py @@ -0,0 +1,55 @@ +from datetime import datetime, timezone +from typing import Any, Union + +import orjson +from pydantic import SecretStr + + +def serialize_object(obj: Any) -> str: + """ + Encodes json with the optimized ORJSON package + + orjson.dumps returns bytearray, so you can't pass it directly as json_serializer + """ + + def _serializer(obj: Any) -> Any: + if isinstance(obj, SecretStr): + return obj.get_secret_value() + raise TypeError + + return orjson.dumps( + obj, + default=_serializer, + option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY, + ).decode() + + +def deserialize_object(obj: Union[bytes, bytearray, memoryview, str, dict[str, Any]]) -> Any: + """ + Decodes to an object with the optimized ORJSON package + + orjson.dumps returns bytearray, so you can't pass it directly as json_serializer + + """ + if isinstance(obj, dict): + return obj + return orjson.loads(obj) + + +def convert_datetime_to_gmt(dt: datetime) -> str: + """Handles datetime serialization for nested timestamps in models/dataclasses""" + if not dt.tzinfo: + dt = dt.replace(tzinfo=timezone.utc) + return dt.isoformat().replace("+00:00", "Z") + + +def convert_string_to_camel_case(string: str) -> str: + """Converts a string to camel case + + Args: + string (str): The string to convert + + Returns: + str: The string converted to camel case + """ + return "".join(word if index == 0 else word.capitalize() for index, word in enumerate(string.split("_"))) diff --git a/src/pyspa/utils/text/__init__.py b/src/pyspa/utils/text/__init__.py new file mode 100644 index 00000000..25b027f8 --- /dev/null +++ b/src/pyspa/utils/text/__init__.py @@ -0,0 +1,3 @@ +from .slugify import slugify + +__all__ = ["slugify"] diff --git a/src/pyspa/utils/text/slugify.py b/src/pyspa/utils/text/slugify.py new file mode 100644 index 00000000..ac8730a9 --- /dev/null +++ b/src/pyspa/utils/text/slugify.py @@ -0,0 +1,20 @@ +# Standard Library +import re +import unicodedata + +__all__ = ["slugify"] + + +def slugify(value: str, allow_unicode: bool = False) -> str: + """ + Convert to ASCII if 'allow_unicode' is False. Convert spaces or repeated + dashes to single dashes. Remove characters that aren't alphanumerics, + underscores, or hyphens. Convert to lowercase. Also strip leading and + trailing whitespace, dashes, and underscores. + """ + if allow_unicode: + value = unicodedata.normalize("NFKC", value) + else: + value = unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii") + value = re.sub(r"[^\w\s-]", "", value.lower()) + return re.sub(r"[-\s]+", "-", value).strip("-_") diff --git a/src/pyspa/__version__.py b/src/pyspa/version.py similarity index 100% rename from src/pyspa/__version__.py rename to src/pyspa/version.py diff --git a/src/pyspa/web/__init__.py b/src/pyspa/web/__init__.py new file mode 100644 index 00000000..2db001a3 --- /dev/null +++ b/src/pyspa/web/__init__.py @@ -0,0 +1,17 @@ +from starlite import Router + +from pyspa.config.paths import urls +from pyspa.web import routes + +router = Router( + path=urls.API_BASE, + route_handlers=[ + routes.health_router, + routes.user_router, + routes.collection_router, + routes.organization_router, + ], +) + + +__all__ = ["routes"] diff --git a/src/pyspa/web/assets/index.html b/src/pyspa/web/assets/index.html new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/web/routes/__init__.py b/src/pyspa/web/routes/__init__.py new file mode 100644 index 00000000..b1ef14a9 --- /dev/null +++ b/src/pyspa/web/routes/__init__.py @@ -0,0 +1,26 @@ +from starlite import Router + +from pyspa.web.routes import collection, health + +__all__ = ["collection_router", "health_router", "organization_router", "access_router", "user_router"] + +collection_router = Router( + path="", + route_handlers=[collection.handle_collection_upload], +) +health_router = Router( + path="", + route_handlers=[health.health_check], +) +organization_router = Router( + path="", + route_handlers=[], +) +access_router = Router( + path="", + route_handlers=[], +) +user_router = Router( + path="", + route_handlers=[], +) diff --git a/src/pyspa/web/routes/access.py b/src/pyspa/web/routes/access.py new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/web/routes/collection.py b/src/pyspa/web/routes/collection.py new file mode 100644 index 00000000..eb41107b --- /dev/null +++ b/src/pyspa/web/routes/collection.py @@ -0,0 +1,30 @@ +import logging + +from starlite import Body, RequestEncodingType, UploadFile, post + +from pyspa.schemas import CamelizedBaseSchema + +logger = logging.getLogger(__name__) + + +class FormData(CamelizedBaseSchema): + collection: UploadFile + variable_t: int + + class Config: + arbitrary_types_allowed = True + + +@post( + path="/upload", + cache=False, + tags=["Collection"], +) +async def handle_collection_upload( + data: FormData = Body(media_type=RequestEncodingType.MULTI_PART), +) -> dict[str, str]: + """Upload a file""" + logger.info("Processing Uploaded File") + return { + "status": "file uploaded", + } diff --git a/src/pyspa/web/routes/health.py b/src/pyspa/web/routes/health.py new file mode 100644 index 00000000..00efc567 --- /dev/null +++ b/src/pyspa/web/routes/health.py @@ -0,0 +1,27 @@ +import logging + +from sqlalchemy import text +from sqlalchemy.ext.asyncio import AsyncSession +from starlite import MediaType, get + +from pyspa import schemas +from pyspa.config import settings +from pyspa.config.paths import urls +from pyspa.version import __version__ + +logger = logging.getLogger() + + +@get(path=urls.HEALTH, media_type=MediaType.JSON, cache=False, tags=["Server"]) +async def health_check(db: AsyncSession) -> schemas.SystemHealth: + """Health check handler""" + logger.info("Checking Server Health") + try: + await db.execute(text("select count(1) from ddl_version")) + db_status = "online" + except ConnectionRefusedError: + db_status = "offline" + logger.error("Failed to connect to database") + return schemas.SystemHealth.parse_obj( + {"app": settings.app.NAME, "version": __version__, "status": "ok", "database_status": db_status} + ) diff --git a/src/pyspa/web/routes/organization.py b/src/pyspa/web/routes/organization.py new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/web/routes/user.py b/src/pyspa/web/routes/user.py new file mode 100644 index 00000000..4eb9a6e2 --- /dev/null +++ b/src/pyspa/web/routes/user.py @@ -0,0 +1,28 @@ +import logging + +from sqlalchemy.ext.asyncio import AsyncSession +from starlite import Body, MediaType, RequestEncodingType, Response, post + +from pyspa import schemas, services +from pyspa.config.paths import urls +from pyspa.core import security + +logger = logging.getLogger(__name__) + + +# Given an instance of 'JWTAuth' we can create a login handler function: +@post(path=urls.ACCESS_TOKEN, media_type=MediaType.JSON, cache=False, tags=["Access"]) +async def user_login( + db: AsyncSession, + data: schemas.UserLogin = Body(media_type=RequestEncodingType.URL_ENCODED), +) -> Response[schemas.User]: + # we have a user instance - probably by retrieving it from persistence using another lib. + # what's important for our purposes is to have an identifier: + user = await services.user.authenticate(db, data.username, data.password) + response = security.oauth2_authentication.login(identifier=str(user.id), response_body=user) + logger.info(response.headers["authorization"]) + + # you can do whatever you want to update the response instance here + # e.g. response.set_cookie(...) + + return response From 37d1cb208e922ae0c81a1642873a5a1bf72a0c8d Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 10:06:48 -0500 Subject: [PATCH 002/397] added backend cors to allowed hosts --- src/pyspa/asgi.py | 1 + src/pyspa/config/application.py | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py index ee8fb4e9..46674060 100644 --- a/src/pyspa/asgi.py +++ b/src/pyspa/asgi.py @@ -22,6 +22,7 @@ middleware=[security.oauth2_authentication.middleware, middleware.DatabaseSessionMiddleware], dependencies={"db": Provide(db.db_session)}, static_files_config=static_files.config, + allowed_hosts=settings.app.BACKEND_CORS_ORIGINS, ) diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index b9c81153..2ce42689 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -11,7 +11,6 @@ from typing import List, Literal, Union import picologging as logging -from pydantic import AnyHttpUrl from pydantic import BaseSettings as _BaseSettings from pydantic import SecretBytes, SecretStr, ValidationError, validator @@ -82,7 +81,7 @@ class Config: EMAIL_RESET_TOKEN_EXPIRE_HOURS: int = 24 INVITE_TOKEN_EXPIRE_HOURS: int = 24 USER_VERIFICATION_TOKEN_EXPIRE_HOURS: int = 24 - BACKEND_CORS_ORIGINS: list[AnyHttpUrl] = [] + BACKEND_CORS_ORIGINS: list[str] = [] CSRF_COOKIE_NAME: str = "pyspa-csrf-token" CSRF_COOKIE_SECURE: bool = True From ee2f17d8bed878548f407c3279cd893f13b6e197 Mon Sep 17 00:00:00 2001 From: Cody Fincher <204685+cofin@users.noreply.github.com> Date: Wed, 14 Sep 2022 10:12:05 -0500 Subject: [PATCH 003/397] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index d44a205b0cc8c5aa3a5f430b71927015f4a8cd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%SyvQ6rE|SO({YaiY^D-7Ob|ua1&zv0VBFlsfj5XjG2<8W>E^+>JRxRevkLg zOu*8vMeMyWbMA8{b0G6zjB$4o?lWdH#w=)v9F--4?xmrcNk-&2Mm7#&8G!W}j7{vX z1Acp*Wh`ZnLGknZ<0#9!-7j9NH`dmhR?})*_ujKCyxh+xnd_&wXkAGe2bJyz*U_jL z+MDMx$^9r9rK%tbN04%N6D6T6TscX?Ox1ciV708)(B7U-PmVjHci5kG#Psx_+Y$ZV z(QMYTws!ZAfV4(0>Hq1WJd*cT%Znlj=@qRj)Hzw Q4oDXPMF@4oz%MZH4cP2SQvd(} From 680757d0ec6ba9768baf737a4576596602f5173e Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 16:49:26 -0500 Subject: [PATCH 004/397] use secret key value --- poetry.lock | 97 +++++++++++++++++++++++--------------- src/pyspa/core/security.py | 2 +- 2 files changed, 59 insertions(+), 40 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5db9be4b..7d643168 100644 --- a/poetry.lock +++ b/poetry.lock @@ -235,7 +235,7 @@ test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] [[package]] name = "certifi" -version = "2022.6.15.2" +version = "2022.9.14" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -641,7 +641,7 @@ async = ["aiofiles (>=0.7,<1.0)"] [[package]] name = "h11" -version = "0.13.0" +version = "0.12.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" category = "main" optional = false @@ -657,18 +657,21 @@ python-versions = ">=3.6" [[package]] name = "httpcore" -version = "0.13.2" +version = "0.15.0" description = "A minimal low-level HTTP client." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] -h11 = "<1.0.0" +anyio = ">=3.0.0,<4.0.0" +certifi = "*" +h11 = ">=0.11,<0.13" sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httptools" @@ -683,21 +686,23 @@ test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.18.1" +version = "0.23.0" description = "The next generation HTTP client." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] certifi = "*" -httpcore = ">=0.13.0,<0.14.0" +httpcore = ">=0.15.0,<0.16.0" rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} sniffio = "*" [package.extras] -brotli = ["brotlicffi (>=1.0.0,<2.0.0)"] -http2 = ["h2 (>=3.0.0,<4.0.0)"] +brotli = ["brotli", "brotlicffi"] +cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<13)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "hypothesis" @@ -1581,7 +1586,7 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "starlite" -version = "1.18.0" +version = "1.18.1" description = "Light-weight and flexible ASGI API Framework" category = "main" optional = false @@ -1611,7 +1616,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "07202e9b9ca1e819d0ca4a9b90fec6e007e7adde" +resolved_reference = "2bc2bc25af4407e466059d4a26b1a9b276620572" [[package]] name = "starlite-jwt" @@ -1845,16 +1850,16 @@ standard = ["colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", [[package]] name = "uvloop" -version = "0.16.0" +version = "0.17.0" description = "Fast implementation of asyncio event loop on top of libuv" category = "main" optional = false python-versions = ">=3.7" [package.extras] -dev = ["Cython (>=0.29.24,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=19.0.0,<19.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=19.0.0,<19.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] +test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] [[package]] name = "virtualenv" @@ -2137,8 +2142,8 @@ CairoSVG = [ {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"}, ] certifi = [ - {file = "certifi-2022.6.15.2-py3-none-any.whl", hash = "sha256:0aa1a42fbd57645fabeb6290a7687c21755b0344ecaeaa05f4e9f6207ae2e9a8"}, - {file = "certifi-2022.6.15.2.tar.gz", hash = "sha256:aa08c101214127b9b0472ca6338315113c9487d45376fd3e669201b477c71003"}, + {file = "certifi-2022.9.14-py3-none-any.whl", hash = "sha256:e232343de1ab72c2aa521b625c80f699e356830fd0e2c620b465b304b17b0516"}, + {file = "certifi-2022.9.14.tar.gz", hash = "sha256:36973885b9542e6bd01dea287b2b4b3b21236307c56324fcc3f1160f2d655ed5"}, ] cffi = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, @@ -2501,8 +2506,8 @@ griffe = [ {file = "griffe-0.22.1.tar.gz", hash = "sha256:0130019b0b3966e9d755d9acb82fe9b64e354064ce971306e5892c098bf1a5c7"}, ] h11 = [ - {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, - {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, + {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, + {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, ] hiredis = [ {file = "hiredis-2.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b4c8b0bc5841e578d5fb32a16e0c305359b987b850a06964bd5a62739d688048"}, @@ -2548,8 +2553,8 @@ hiredis = [ {file = "hiredis-2.0.0.tar.gz", hash = "sha256:81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a"}, ] httpcore = [ - {file = "httpcore-0.13.2-py3-none-any.whl", hash = "sha256:52b7d9413f6f5592a667de9209d70d4d41aba3fb0540dd7c93475c78b85941e9"}, - {file = "httpcore-0.13.2.tar.gz", hash = "sha256:c16efbdf643e1b57bde0adc12c53b08645d7d92d6d345a3f71adfc2a083e7fd2"}, + {file = "httpcore-0.15.0-py3-none-any.whl", hash = "sha256:1105b8b73c025f23ff7c36468e4432226cbb959176eab66864b8e31c4ee27fa6"}, + {file = "httpcore-0.15.0.tar.gz", hash = "sha256:18b68ab86a3ccf3e7dc0f43598eaddcf472b602aba29f9aa6ab85fe2ada3980b"}, ] httptools = [ {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"}, @@ -2595,8 +2600,8 @@ httptools = [ {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, ] httpx = [ - {file = "httpx-0.18.1-py3-none-any.whl", hash = "sha256:ad2e3db847be736edc4b272c4d5788790a7e5789ef132fc6b5fef8aeb9e9f6e0"}, - {file = "httpx-0.18.1.tar.gz", hash = "sha256:0a2651dd2b9d7662c70d12ada5c290abcf57373b9633515fe4baa9f62566086f"}, + {file = "httpx-0.23.0-py3-none-any.whl", hash = "sha256:42974f577483e1e932c3cdc3cd2303e883cbfba17fe228b0f63589764d7b9c4b"}, + {file = "httpx-0.23.0.tar.gz", hash = "sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"}, ] hypothesis = [ {file = "hypothesis-6.54.5-py3-none-any.whl", hash = "sha256:d8d2e18139be18e5c95593f1e2d87dbcd21534a32022a1db6e8ac2d458ee1d1a"}, @@ -3240,22 +3245,36 @@ uvicorn = [ {file = "uvicorn-0.18.3.tar.gz", hash = "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b"}, ] uvloop = [ - {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"}, - {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c"}, - {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64"}, - {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9"}, - {file = "uvloop-0.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638"}, - {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450"}, - {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805"}, - {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382"}, - {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee"}, - {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464"}, - {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab"}, - {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f"}, - {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897"}, - {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f"}, - {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"}, - {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, + {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"}, + {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"}, + {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"}, + {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"}, + {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"}, + {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"}, + {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"}, + {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"}, + {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"}, + {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"}, + {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"}, + {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"}, + {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"}, + {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"}, + {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"}, + {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"}, + {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"}, + {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"}, + {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"}, + {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"}, + {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"}, + {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"}, + {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"}, + {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"}, + {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"}, + {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"}, + {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"}, + {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"}, + {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"}, + {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"}, ] virtualenv = [ {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py index 131b4806..c4f2bb58 100644 --- a/src/pyspa/core/security.py +++ b/src/pyspa/core/security.py @@ -24,7 +24,7 @@ async def user_lookup(sub: str) -> "User": oauth2_authentication = OAuth2PasswordBearerAuth( # nosec retrieve_user_handler=user_lookup, - token_secret=settings.app.SECRET_KEY, + token_secret=settings.app.SECRET_KEY.get_secret_value(), token_url=paths.urls.ACCESS_TOKEN, exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], ) From 343f633474963d52d08a8030f8122e7175c32930 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 20:23:20 -0500 Subject: [PATCH 005/397] linting --- .flake8 | 2 +- .pre-commit-config.yaml | 1 + .pylintrc | 2 +- Dockerfile | 6 +- Makefile | 63 +++- docs/developer_guide/releases.md | 4 +- docs/developer_guide/workflows.md | 8 +- mkdocs.yml | 18 +- sonar-project.properties | 6 +- src/pyspa/__init__.py | 2 +- src/pyspa/asgi.py | 4 +- src/pyspa/cli/__init__.py | 5 +- src/pyspa/cli/commands/manage.py | 2 +- src/pyspa/cli/commands/run.py | 12 +- src/pyspa/config/alembic.ini | 6 +- src/pyspa/config/application.py | 15 +- src/pyspa/config/logging.py | 55 +++- src/pyspa/config/paths.py | 9 +- src/pyspa/core/security.py | 10 +- src/pyspa/core/static_files.py | 8 +- src/pyspa/db/migrations/env.py | 2 +- src/pyspa/db/migrations/script.py.mako | 14 +- .../versions/2022-09-13_09faf9d2e328.py | 146 +++++++++ src/pyspa/middleware/jwt.py | 2 +- src/pyspa/models/__init__.py | 18 +- src/pyspa/models/collection.py | 58 ---- src/pyspa/models/team.py | 111 +++---- src/pyspa/models/upload.py | 31 ++ src/pyspa/models/user.py | 8 +- src/pyspa/repositories/base.py | 14 +- src/pyspa/repositories/user.py | 2 +- src/pyspa/schemas/__init__.py | 32 +- src/pyspa/schemas/team.py | 34 +-- src/pyspa/schemas/user.py | 42 +-- src/pyspa/services/base.py | 24 +- src/pyspa/services/health.py | 2 + src/pyspa/services/user.py | 18 +- src/pyspa/utils/__init__.py | 13 +- src/pyspa/utils/log/__init__.py | 3 - src/pyspa/utils/log/extensions.py | 276 ------------------ src/pyspa/web/public/.gitkeep | 0 tools/deploy.py | 0 tools/format-source.sh | 5 + tools/requirements-debian-buster-x86_64.sh | 0 tools/requirements-osx-arm64.sh | 3 + tools/requirements-rhel8-x86_64.sh | 3 + vite.config.ts | 102 +++++++ 47 files changed, 589 insertions(+), 612 deletions(-) create mode 100644 src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py delete mode 100644 src/pyspa/models/collection.py create mode 100644 src/pyspa/models/upload.py delete mode 100644 src/pyspa/utils/log/__init__.py delete mode 100644 src/pyspa/utils/log/extensions.py create mode 100644 src/pyspa/web/public/.gitkeep create mode 100644 tools/deploy.py create mode 100755 tools/format-source.sh create mode 100644 tools/requirements-debian-buster-x86_64.sh create mode 100644 tools/requirements-osx-arm64.sh create mode 100644 tools/requirements-rhel8-x86_64.sh diff --git a/.flake8 b/.flake8 index 5e1bf944..61686273 100644 --- a/.flake8 +++ b/.flake8 @@ -17,4 +17,4 @@ classmethod-decorators = validator root_validator declared_attr -type-checking-exempt-modules = from sqlalchemy.orm \ No newline at end of file +type-checking-exempt-modules = from sqlalchemy.orm diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 64f40081..8fa0122c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -103,4 +103,5 @@ repos: starlette, sqlalchemy, types-freezegun, + types-jose ] diff --git a/.pylintrc b/.pylintrc index 2b62d4fa..43a264f3 100644 --- a/.pylintrc +++ b/.pylintrc @@ -438,4 +438,4 @@ max-returns=15 max-branches=15 [VARIABLES] -ignored-argument-names=args|kwargs|_|__ \ No newline at end of file +ignored-argument-names=args|kwargs|_|__ diff --git a/Dockerfile b/Dockerfile index 9b476a30..392d6bd8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ ENV POETRY_HOME="/opt/poetry" \ POETRY_VIRTUALENVS_IN_PROJECT=1 \ POETRY_CACHE_DIR='/var/cache/pypoetry' \ POETRY_VERSION='1.1.4' \ - POETRY_INSTALL_ARGS="${POETRY_INSTALL_ARGS}" + POETRY_INSTALL_ARGS="${POETRY_INSTALL_ARGS}" RUN apt-get install -y --no-install-recommends curl git build-essential \ && apt-get autoremove -y @@ -79,7 +79,7 @@ RUN addgroup --system --gid 1001 "app-user" \ && adduser --no-create-home --system --uid 1001 "app-user" \ && chown -R "app-user":"app-user" /app COPY --chown="app-user":"app-user" --from=build-stage /app/venv /app/venv/ -COPY --chown="app-user":"app-user" *.md LICENSE /app/ +COPY --chown="app-user":"app-user" *.md LICENSE /app/ COPY --chown="app-user":"app-user" sample /app/sample # These are the two folders that change the most. @@ -87,4 +87,4 @@ COPY --chown="app-user":"app-user" db_assessment /app/db_assessment USER "app-user" ENTRYPOINT [ "gunicorn","--bind", "0.0.0.0:8080","--timeout", "0", "--workers","1", "db_assessment.api:app"] -EXPOSE 8080 \ No newline at end of file +EXPOSE 8080 diff --git a/Makefile b/Makefile index b8010254..fea16590 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ .ONESHELL: ENV_PREFIX=$(shell python3 -c "if __import__('pathlib').Path('.venv/bin/pip').exists(): print('.venv/bin/')") USING_POETRY=$(shell grep "tool.poetry" pyproject.toml && echo "yes") -USING_DOCKER=$(shell grep "OPDBA_USE_DOCKER=true" .env && echo "yes") +USING_DOCKER=$(shell grep "PYSPA_USE_DOCKER=true" .env && echo "yes") USING_PNPM=$(shell python3 -c "if __import__('pathlib').Path('pnpm-lock.yaml').exists(): print('yes')") USING_YARN=$(shell python3 -c "if __import__('pathlib').Path('yarn.lock').exists(): print('yes')") USING_NPM=$(shell python3 -c "if __import__('pathlib').Path('package-lock.json').exists(): print('yes')") @@ -24,7 +24,7 @@ help: ## Display this help .PHONY: upgrade-dependencies -upgrade-dependencies: ## Upgrade all dependencies to the latest stable versions +upgrade-dependencies: ## Upgrade all dependencies to the latest stable versions @if [ "$(USING_POETRY)" ]; then poetry update; fi @echo "Python Dependencies Updated" @if [ "$(USING_YARN)" ]; then yarn upgrade; fi @@ -34,25 +34,27 @@ upgrade-dependencies: ## Upgrade all dependencies to the latest stable ############### # lint & test # ############### -format-source: ## Format source code +format-source: ## Format source code @echo 'Formatting and cleaning source...' ./scripts/format-source-code.sh -lint: ## check style with flake8 - env PYTHONPATH=src poetry run flake8 src +lint: ## check style with flake8 + env PYTHONPATH=src poetry run pre-commit run --all-files -test: ## run tests quickly with the default Python +test: ## run tests quickly with the default Python env PYTHONPATH=src poetry run pytest --cov-config .coveragerc --cov=src -l --tb=short tests/backend/unit coverage xml coverage html -test-all: ## run tests on every Python version with tox +test-all: ## run tests on every Python version with tox env PYTHONPATH=src poetry run tox -coverage: ## check code coverage quickly with the default Python +coverage: ## check code coverage quickly with the default Python env PYTHONPATH=src/ poetry run coverage run --source pyspa -m pytest env PYTHONPATH=src/ poetry run coverage report -m + + .PHONY: install install: ## Install the project in dev mode. @if ! poetry --version > /dev/null; then echo 'poetry is required, install from https://python-poetry.org/'; exit 1; fi @@ -66,17 +68,58 @@ install: ## Install the project in dev mode. .PHONY: migrations migrations: ## Generate database migrations @echo "ATTENTION: This operation will create a new database migration for any defined models changes." + @while [ -z "$$MIGRATION_MESSAGE" ]; do read -r -p "Migration message: " MIGRATION_MESSAGE; done ; @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" .PHONY: migrate migrate: ## Generate database migrations @echo "ATTENTION: Will apply all database migrations." - @env PYTHONPATH=src poetry run pyspa config upgrade-database + @env PYTHONPATH=src poetry run pyspa manage upgrade-database .PHONY: squash-migrations squash-migrations: ## Generate database migrations @echo "ATTENTION: This operation will wipe alll migrations and recreate from an emtpy state." - @env PYTHONPATH=src poetry run pyspa config purge-database --no-prompt + @env PYTHONPATH=src poetry run pyspa manage purge-database --no-prompt rm -Rf src/pyspa/db/migrations/versions/*.py + @while [ -z "$$MIGRATION_MESSAGE" ]; do read -r -p "Intial migration message: " MIGRATION_MESSAGE; done ; @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" +.PHONY: clean +clean: ## remove all build, testing, and static documentation files + rm -fr build/ + rm -fr dist/ + rm -fr .eggs/ + find . -name '*.egg-info' -exec rm -fr {} + + find . -name '*.egg' -exec rm -f {} + + find . -name '*.pyc' -exec rm -f {} + + find . -name '*.pyo' -exec rm -f {} + + find . -name '*~' -exec rm -f {} + + find . -name '__pycache__' -exec rm -fr {} + + find . -name '.ipynb_checkpoints' -exec rm -fr {} + + rm -fr .tox/ + rm -fr .coverage + rm -fr coverage.xml + rm -fr coverage.json + rm -fr htmlcov/ + rm -fr .pytest_cache + rm -fr .mypy_cache + rm -fr site + +.PHONY: gen-docs +gen-docs: ## generate HTML documentation + mkdocs build + +.PHONY: docs +docs: ## generate HTML documentation and serve it to the browser + mkdocs build + mkdocs serve + +.PHONY: pre-release +pre-release: ## bump the version and create the release tag + make check + make gen-docs + make clean + bump2version $(increment) + git describe --tags --abbrev=0 + head pyproject.toml | grep version + cat src/pytemplates_typer_cli/__version__.py diff --git a/docs/developer_guide/releases.md b/docs/developer_guide/releases.md index 777b2ebb..2158d9e5 100644 --- a/docs/developer_guide/releases.md +++ b/docs/developer_guide/releases.md @@ -1,7 +1,7 @@ # Releases -A release should consist of the following two steps from a tested, linted, and up to date copy of the *main* branch: +A release should consist of the following two steps from a tested, linted, and up to date copy of the _main_ branch: 1. `make pre-release increment={major/minor/patch}` - Commit the version number bump and create a new tag locally. The version number follows semantic versioning standards (major.minor.patch) and the tag is the version number prepended with a 'v'. -2. `git push --follow-tags` - Update the *main* branch with only the changes from the version bump. Publish the new tag and kick off the release workflow. +2. `git push --follow-tags` - Update the _main_ branch with only the changes from the version bump. Publish the new tag and kick off the release workflow. diff --git a/docs/developer_guide/workflows.md b/docs/developer_guide/workflows.md index 9879e81e..c99bebc1 100644 --- a/docs/developer_guide/workflows.md +++ b/docs/developer_guide/workflows.md @@ -2,14 +2,14 @@ ## Test -- Run the tests on every push/pull_request to the *main* branch. +- Run the tests on every push/pull_request to the _main_ branch. - Writes a coverage report using pytest-cov and uploads it to codecov.io. - Tests run against python versions 3.8 and 3.9. - Optional manual trigger in the github actions tab. ## Lint -- Run the linting tools on every push/pull_request to the *main* branch. +- Run the linting tools on every push/pull_request to the _main_ branch. - Includes pre-commit hooks, black, isort, flake8, pylint, and mypy. - Optional manual trigger in the github actions tab. @@ -17,12 +17,12 @@ - Build a wheel distribution, build a docker image, create a github release, and publish to PyPI and Docker Hub whenever a new tag is created. - Linting and testing steps must pass before the release steps can begin. -- Documentation is automatically published to the *docs* branch and hosted on github pages. +- Documentation is automatically published to the _docs_ branch and hosted on github pages. - All github release tags, docker image tags, and PyPI version numbers are in agreement with one another and follow semantic versioning standards. ## Build and Publish Docs -- Build the documentation, publish to the *docs* branch, and release to github pages. +- Build the documentation, publish to the _docs_ branch, and release to github pages. - Runs only on a manual trigger in the github actions tab. ## Build and Publish Docker Image diff --git a/mkdocs.yml b/mkdocs.yml index daf35a4a..9a301c6b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: Pytemplates - Typer CLI -repo_url: https://github.com/PyTemplate/typer_cli +repo_url: https://github.com/cofin/starlite-spa edit_uri: ./edit/main/docs # Sticking with readthedocs theme for basic template @@ -12,21 +12,21 @@ plugins: - mkdocstrings nav: - - Home: index.md - - User Guide: + - Home: index.md + - User Guide: - Installation: user_guide/installation.md - Usage: user_guide/usage.md - - Developer Guide: + - Developer Guide: - Developer Setup: developer_guide/developer_setup.md - Commands: developer_guide/commands.md - Workflows: developer_guide/workflows.md - Releases: developer_guide/releases.md - - App Reference: + - App Reference: - App Reference: app_reference/app.md - - Code Reference: + - Code Reference: - Core: - - Module1: code_reference/module1.md - - Module2: code_reference/module2.md - - Extras: + - Module1: code_reference/module1.md + - Module2: code_reference/module2.md + - Extras: - File Tree: extras/file_tree.md - Credits: extras/credits.md diff --git a/sonar-project.properties b/sonar-project.properties index 5c2c56f2..0dbcec92 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,8 +1,8 @@ -sonar.projectKey=starlite-api_starlite-pg-redis-docker -sonar.organization=starlite-api +sonar.projectKey=pyspa +sonar.organization=cofin sonar.python.coverage.reportPaths=coverage.xml sonar.test.inclusions=tests/**/*.py sonar.sources=src sonar.sourceEncoding=UTF-8 -sonar.cpd.exclusions=src/pyspa/db/migrations/**/*, src/pyspa/config/gunicorn.py, utils/**/* +sonar.cpd.exclusions=src/pyspa/db/migrations/versions/**/*,utils/**/* sonar.python.version=3.10 diff --git a/src/pyspa/__init__.py b/src/pyspa/__init__.py index 102aa303..eb8a71e9 100644 --- a/src/pyspa/__init__.py +++ b/src/pyspa/__init__.py @@ -1,4 +1,4 @@ -import picologging as logging +import logging from pyspa import asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web from pyspa.version import __version__ diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py index 46674060..4d5b8983 100644 --- a/src/pyspa/asgi.py +++ b/src/pyspa/asgi.py @@ -54,11 +54,11 @@ def run_server( import uvicorn # pylint: disable=[import-outside-toplevel] uvicorn.run( - asgi_app=asgi_app, + app=asgi_app, host=host, port=port, log_level=log_level, - log_config=None, + log_config=None, # this tells uvicorn to not apply its customizations reload=reload, lifespan=lifespan, access_log=access_log, diff --git a/src/pyspa/cli/__init__.py b/src/pyspa/cli/__init__.py index fa7249be..bd927718 100644 --- a/src/pyspa/cli/__init__.py +++ b/src/pyspa/cli/__init__.py @@ -1,4 +1,5 @@ +from pyspa.cli import commands +from pyspa.cli.app import cli from pyspa.cli.console import console -from pyspa.cli.main import cli -__all__ = ["cli", "console"] +__all__ = ["cli", "commands", "console"] diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index c802b176..99439348 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -136,7 +136,7 @@ async def drop_tables() -> None: async with engine.begin() as db: logger.info("[bold red] Dropping the db") - BaseModel.metadata.drop_all() + await db.run_sync(BaseModel.metadata.drop_all) logger.info("[bold red] Truncating the version table") await db.execute( diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index a896b0d9..2e27a1e8 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -15,8 +15,8 @@ ) -@cli.command() -def api( +@cli.command(name="server") +def server( host: str = typer.Option( settings.server.HOST, "--host", @@ -25,7 +25,7 @@ def api( ), port: int = typer.Option(settings.server.PORT, "--port", "-p", help="Port to listen on."), workers: int = typer.Option( - settings.server.WORKERS, + settings.server.HTTP_WORKERS, "--workers", "-w", help="Number of HTTP workers to run.", @@ -42,13 +42,13 @@ def api( console.print("[bold blue]Launching API Server with Uvicorn") settings.server.HOST = host settings.server.PORT = port - settings.server.WORKERS = workers + settings.server.HTTP_WORKERS = workers settings.server.RELOAD = reload run_server( host=settings.server.HOST, port=settings.server.PORT, - http_workers=settings.server.WORKERS, + http_workers=settings.server.HTTP_WORKERS, reload=settings.server.RELOAD, - log_level=settings.server.LOG_LEVEL, + log_level=settings.server.UVICORN_LOG_LEVEL, asgi_app=settings.server.ASGI_APP, ) diff --git a/src/pyspa/config/alembic.ini b/src/pyspa/config/alembic.ini index f39d1fdc..d98860e1 100644 --- a/src/pyspa/config/alembic.ini +++ b/src/pyspa/config/alembic.ini @@ -59,16 +59,16 @@ qualname = [logger_sqlalchemy] level = WARN -handlers = +handlers = qualname = sqlalchemy.engine [logger_alembic] level = INFO -handlers = +handlers = qualname = alembic [handler_console] -class = pyspa.utils.log.extensions.RichPicologgingHandler +class = rich.logging.RichHandler kwargs = {"rich_tracebacks": True, "markup": True, "omit_repeated_times": False} formatter = generic diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index 2ce42689..5ed1b3c3 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -4,13 +4,13 @@ Take not of the environment variable prefixes required for each settings class, except [`AppSettings`][starlite_lib.config.AppSettings]. """ +import logging import sys from datetime import datetime from enum import Enum, EnumMeta from functools import lru_cache from typing import List, Literal, Union -import picologging as logging from pydantic import BaseSettings as _BaseSettings from pydantic import SecretBytes, SecretStr, ValidationError, validator @@ -104,7 +104,7 @@ def assemble_cors_origins( ) -> Union[list[str], str]: """Parses a list of origins""" - if isinstance(value, List): + if isinstance(value, list): return value if isinstance(value, str) and not value.startswith("["): return [host.strip() for host in value.split(",")] @@ -167,7 +167,8 @@ class Config: POOL_PRE_PING: bool = True URL: str MIGRATION_CONFIG: str = f"{BASE_DIR}/config/alembic.ini" - MIGRATION_PATH: str = f"{BASE_DIR}/core/migrations" + MIGRATION_PATH: str = f"{BASE_DIR}/db/migrations" + MIGRATION_DDL_VERSION_TABLE: str = "ddl_version" # noinspection PyUnresolvedReferences @@ -200,9 +201,11 @@ class Config: ASGI_APP: str = "pyspa.asgi:app" HOST: str = "0.0.0.0" # nosec PORT: int = 8000 - WORKERS: int = 1 + HTTP_WORKERS: int = 1 + BACKGROUND_WORKERS: int = 1 RELOAD: bool = False - LOG_LEVEL: str = "error" + UVICORN_LOG_LEVEL: str = "WARNING" + GUNICORN_LOG_LEVEL: str = "WARNING" class Settings(BaseSettings): @@ -219,7 +222,7 @@ class Settings(BaseSettings): server: ServerSettings -@lru_cache() +@lru_cache def get_settings(env: str = "production") -> "Settings": """Load Settings file diff --git a/src/pyspa/config/logging.py b/src/pyspa/config/logging.py index 41fc0d8d..e5f33c1e 100644 --- a/src/pyspa/config/logging.py +++ b/src/pyspa/config/logging.py @@ -1,23 +1,57 @@ +import logging +import re +from typing import Any + +from starlette.status import HTTP_200_OK from starlite.config import LoggingConfig -from pyspa.utils.log.extensions import PicologgingAccessLogFilter +from pyspa.config.application import settings +from pyspa.config.paths import urls + + +class AccessLogFilter(logging.Filter): + """For filtering log events based on request path. + + Parameters + ---------- + path_re : str + Regex string, if the path of the request matches the regex the log event is dropped. + args : Any + kwargs : Any + Args and kwargs passed through to `logging.Filter`. + """ + + def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.path_filter = re.compile(path_re) + + def filter(self, record: logging.LogRecord) -> bool: + *_, req_path, _, status_code = record.args # type:ignore[misc] + if ( + self.path_filter.match(req_path) # type:ignore[arg-type] + and status_code == HTTP_200_OK + ): + return False + return True + log_config = LoggingConfig( + root={"level": settings.app.LOG_LEVEL, "handlers": ["queue_listener"]}, filters={ "health_filter": { - "()": PicologgingAccessLogFilter, - "path_re": "^/health$", + "()": AccessLogFilter, + "path_re": f"^{urls.HEALTH}$", } }, handlers={ "console": { - "class": "pyspa.utils.log.extensions.RichPicologgingHandler", + "class": "rich.logging.RichHandler", "markup": True, "rich_tracebacks": True, "omit_repeated_times": False, }, "queue_listener": { - "class": "starlite.logging.picologging.QueueListenerHandler", + "class": "starlite.QueueListenerHandler", "handlers": ["cfg://handlers.console"], }, }, @@ -25,20 +59,15 @@ "standard": {"format": "%(message)s"}, }, loggers={ - "pyspa": { - "propagate": True, - "filters": ["health_filter"], - "level": "INFO", - }, "uvicorn.access": { "propagate": True, "filters": ["health_filter"], + "level": settings.server.UVICORN_LOG_LEVEL.lower(), }, - "uvicorn.error": { - "propagate": True, - }, + "uvicorn.error": {"propagate": True, "level": settings.server.UVICORN_LOG_LEVEL.lower()}, "sqlalchemy": { "propagate": True, + "level": "WARNING", }, "starlite": { "level": "WARNING", diff --git a/src/pyspa/config/paths.py b/src/pyspa/config/paths.py index 8e99676d..eb35c510 100644 --- a/src/pyspa/config/paths.py +++ b/src/pyspa/config/paths.py @@ -1,8 +1,12 @@ +from pathlib import Path from typing import Final -from opdba import utils +from pyspa import utils -BASE_DIR: Final = utils.import_tools.module_to_os_path("opdba") +BASE_DIR: Final = utils.import_tools.module_to_os_path("pyspa") + +PUBLIC_DIR = Path(BASE_DIR, "web/public") +ASSETS_DIR = Path(BASE_DIR, "web/assets") class ApiPaths: @@ -14,6 +18,7 @@ class ApiPaths: REFRESH_TOKEN = "/access/refresh" # nosec SIGNUP = "/access/signup" # + STATIC = "/public" urls = ApiPaths() diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py index c4f2bb58..9244b908 100644 --- a/src/pyspa/core/security.py +++ b/src/pyspa/core/security.py @@ -29,11 +29,11 @@ async def user_lookup(sub: str) -> "User": exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], ) -pwd_context = CryptContext(schemes=["argon2"], deprecated="auto") +password_crypt_context = CryptContext(schemes=["argon2"], deprecated="auto") def get_encryption_key(secret: str) -> bytes: - padded_secret = "{:<32}".format(secret)[0:32] + padded_secret = f"{secret:<32}"[0:32] return base64.urlsafe_b64encode(padded_secret.encode()) @@ -44,8 +44,8 @@ async def get_password_hash(password: "SecretStr") -> str: Returns: Hashed password """ - pw_hash = await run_async(pwd_context.hash)(password.get_secret_value()) - return str(pw_hash) + pw_hash = await run_async(password_crypt_context.hash)(password.get_secret_value()) + return pw_hash async def verify_password(plain_password: "SecretStr", hashed_password: str) -> bool: @@ -56,7 +56,7 @@ async def verify_password(plain_password: "SecretStr", hashed_password: str) -> Returns: True if password is correct """ - valid, _ = await run_async(pwd_context.verify_and_update)( + valid, _ = await run_async(password_crypt_context.verify_and_update)( plain_password.get_secret_value(), hashed_password, ) diff --git a/src/pyspa/core/static_files.py b/src/pyspa/core/static_files.py index c428d530..ba4041ab 100644 --- a/src/pyspa/core/static_files.py +++ b/src/pyspa/core/static_files.py @@ -1,12 +1,6 @@ -from pathlib import Path - from starlite import StaticFilesConfig from pyspa.config import paths -config = [ - StaticFilesConfig( - directories=[Path(paths.BASE_DIR, "web/public"), Path(paths.BASE_DIR, "web/assets")], path="/public" - ), -] +config = [StaticFilesConfig(directories=[paths.PUBLIC_DIR, paths.ASSETS_DIR], path=paths.urls.STATIC)] """Static files config""" diff --git a/src/pyspa/db/migrations/env.py b/src/pyspa/db/migrations/env.py index 3413ecf3..21a270d6 100644 --- a/src/pyspa/db/migrations/env.py +++ b/src/pyspa/db/migrations/env.py @@ -58,7 +58,7 @@ def do_run_migrations(connection: "Connection") -> None: connection=connection, target_metadata=target_metadata, compare_type=True, - version_table="ddl_version", + version_table=settings.db.MIGRATION_DDL_VERSION_TABLE, user_module_prefix="sa.", ) diff --git a/src/pyspa/db/migrations/script.py.mako b/src/pyspa/db/migrations/script.py.mako index dc4c9983..a0a65eb2 100644 --- a/src/pyspa/db/migrations/script.py.mako +++ b/src/pyspa/db/migrations/script.py.mako @@ -6,13 +6,21 @@ Revises: ${down_revision | comma,n} Create Date: ${create_date} """ -from alembic import op import sqlalchemy as sa -from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime +from alembic import op +from sqlalchemy.dialects import postgresql +from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime ${imports if imports else ""} -sa.GUID = GUID +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + + +sa.GUID = GUID sa.EmailString = EmailString sa.JsonObject = JsonObject sa.PydanticType = PydanticType diff --git a/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py b/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py new file mode 100644 index 00000000..3fa21091 --- /dev/null +++ b/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py @@ -0,0 +1,146 @@ +# type: ignore +""" + +Revision ID: 09faf9d2e328 +Revises: +Create Date: 2022-09-13 23:10:29.170333 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + +# revision identifiers, used by Alembic. +revision = '09faf9d2e328' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('team', + sa.Column('name', sa.String(length=255), nullable=False), + sa.Column('description', sa.String(length=500), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team')), + sa.UniqueConstraint('id', name=op.f('uq_team_id')) + ) + op.create_index(op.f('ix_team_created_at'), 'team', ['created_at'], unique=False) + op.create_index(op.f('ix_team_name'), 'team', ['name'], unique=False) + op.create_index(op.f('ix_team_updated_at'), 'team', ['updated_at'], unique=False) + op.create_table('user_account', + sa.Column('full_name', sa.String(length=255), nullable=True), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('hashed_password', sa.String(length=255), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('is_superuser', sa.Boolean(), nullable=False), + sa.Column('is_verified', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_user_account')), + sa.UniqueConstraint('id', name=op.f('uq_user_account_id')), + comment='User accounts for application access' + ) + op.create_index(op.f('ix_user_account_created_at'), 'user_account', ['created_at'], unique=False) + op.create_index(op.f('ix_user_account_email'), 'user_account', ['email'], unique=True) + op.create_index(op.f('ix_user_account_updated_at'), 'user_account', ['updated_at'], unique=False) + op.create_table('team_invitation', + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_accepted', sa.Boolean(), nullable=True), + sa.Column('invited_by_id', sa.GUID(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.Column('expires_at', sa.TimestampAwareDateTime(timezone=True), nullable=False), + sa.ForeignKeyConstraint(['invited_by_id'], ['user_account.id'], name=op.f('fk_team_invitation_invited_by_id_user_account')), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_invitation_team_id_team')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_invitation')), + sa.UniqueConstraint('id', name=op.f('uq_team_invitation_id')) + ) + op.create_index(op.f('ix_team_invitation_created_at'), 'team_invitation', ['created_at'], unique=False) + op.create_index(op.f('ix_team_invitation_expires_at'), 'team_invitation', ['expires_at'], unique=False) + op.create_index(op.f('ix_team_invitation_updated_at'), 'team_invitation', ['updated_at'], unique=False) + op.create_table('team_member', + sa.Column('user_id', sa.GUID(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_owner', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_member_team_id_team')), + sa.ForeignKeyConstraint(['user_id'], ['user_account.id'], name=op.f('fk_team_member_user_id_user_account')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_member')), + sa.UniqueConstraint('id', name=op.f('uq_team_member_id')), + sa.UniqueConstraint('user_id', 'team_id', name=op.f('uq_team_member_user_id')) + ) + op.create_index(op.f('ix_team_member_created_at'), 'team_member', ['created_at'], unique=False) + op.create_index(op.f('ix_team_member_role'), 'team_member', ['role'], unique=False) + op.create_index(op.f('ix_team_member_updated_at'), 'team_member', ['updated_at'], unique=False) + op.create_table('upload', + sa.Column('file_name', sa.String(length=255), nullable=True), + sa.Column('uploaded_by', sa.String(length=255), nullable=True), + sa.Column('is_processed', sa.Boolean(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_upload_team_id_team'), ondelete='cascade'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_upload')), + sa.UniqueConstraint('id', name=op.f('uq_upload_id')), + comment='Stores links to uploaded files' + ) + op.create_index(op.f('ix_upload_created_at'), 'upload', ['created_at'], unique=False) + op.create_index(op.f('ix_upload_file_name'), 'upload', ['file_name'], unique=False) + op.create_index(op.f('ix_upload_is_processed'), 'upload', ['is_processed'], unique=False) + op.create_index(op.f('ix_upload_updated_at'), 'upload', ['updated_at'], unique=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_upload_updated_at'), table_name='upload') + op.drop_index(op.f('ix_upload_is_processed'), table_name='upload') + op.drop_index(op.f('ix_upload_file_name'), table_name='upload') + op.drop_index(op.f('ix_upload_created_at'), table_name='upload') + op.drop_table('upload') + op.drop_index(op.f('ix_team_member_updated_at'), table_name='team_member') + op.drop_index(op.f('ix_team_member_role'), table_name='team_member') + op.drop_index(op.f('ix_team_member_created_at'), table_name='team_member') + op.drop_table('team_member') + op.drop_index(op.f('ix_team_invitation_updated_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_expires_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_created_at'), table_name='team_invitation') + op.drop_table('team_invitation') + op.drop_index(op.f('ix_user_account_updated_at'), table_name='user_account') + op.drop_index(op.f('ix_user_account_email'), table_name='user_account') + op.drop_index(op.f('ix_user_account_created_at'), table_name='user_account') + op.drop_table('user_account') + op.drop_index(op.f('ix_team_updated_at'), table_name='team') + op.drop_index(op.f('ix_team_name'), table_name='team') + op.drop_index(op.f('ix_team_created_at'), table_name='team') + op.drop_table('team') + # ### end Alembic commands ### diff --git a/src/pyspa/middleware/jwt.py b/src/pyspa/middleware/jwt.py index d2fb1c1d..de11def1 100644 --- a/src/pyspa/middleware/jwt.py +++ b/src/pyspa/middleware/jwt.py @@ -16,7 +16,7 @@ class OAuth2PasswordBearerAuth(JWTAuth): """ The URL for retrieving a new token """ - scopes: Optional[Dict[str, str]] = {} + scopes: Optional[dict[str, str]] = {} """Scopes available for the token""" @property diff --git a/src/pyspa/models/__init__.py b/src/pyspa/models/__init__.py index a546da6e..b7541fcb 100644 --- a/src/pyspa/models/__init__.py +++ b/src/pyspa/models/__init__.py @@ -1,19 +1,7 @@ # export models here so that are easy to access via `models.*` from pyspa.models.base import BaseModel, meta -from pyspa.models.collection import Collection, Upload -from pyspa.models.organization import Organization +from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoleTypes +from pyspa.models.upload import Upload from pyspa.models.user import User -from pyspa.models.workspace import Workspace, WorkspaceInvitation, WorkspaceMember, WorkspaceRoleTypes -__all__ = [ - "BaseModel", - "meta", - "User", - "Workspace", - "WorkspaceInvitation", - "WorkspaceMember", - "WorkspaceRoleTypes", - "Organization", - "Collection", - "Upload", -] +__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoleTypes", "Upload"] diff --git a/src/pyspa/models/collection.py b/src/pyspa/models/collection.py deleted file mode 100644 index f117fa47..00000000 --- a/src/pyspa/models/collection.py +++ /dev/null @@ -1,58 +0,0 @@ -from typing import TYPE_CHECKING - -import sqlalchemy as sa -from pydantic import UUID4 -from sqlalchemy import orm - -from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin - -if TYPE_CHECKING: - from .workspace import Workspace - - -class Collection(BaseModel, CreatedUpdatedAtMixin): - """Assessment Collection""" - - __tablename__ = "collection" - __table_args__ = {"comment": "Stores the top level collection of files"} - - file_name: orm.Mapped[str] = sa.Column(sa.Unicode(length=255), index=True) # type: ignore[no-untyped-call] - uploaded_by: orm.Mapped[str] = sa.Column(sa.Unicode(length=255), index=False) # type: ignore[no-untyped-call] - is_processed: orm.Mapped[bool] = sa.Column(sa.Boolean, nullable=False, default=False, index=True) - workspace_id: orm.Mapped[UUID4] = sa.Column( - sa.ForeignKey("workspace.id", ondelete="cascade"), - nullable=False, - ) - # ----------- - # ORM Relationships - # ------------ - workspace: orm.Mapped["Workspace"] = orm.relationship( - "Workspace", - back_populates="collections", - innerjoin=True, - viewonly=True, - ) - - -class Upload(BaseModel, CreatedUpdatedAtMixin): - """Users""" - - __tablename__ = "upload" - __table_args__ = {"comment": "Stores links to uploaded files"} - - file_name: orm.Mapped[str] = sa.Column(sa.String(length=255), index=True) - uploaded_by: orm.Mapped[str] = sa.Column(sa.String(length=255), index=False) - is_processed: orm.Mapped[bool] = sa.Column(sa.Boolean, nullable=False, default=False, index=True) - workspace_id: orm.Mapped[UUID4] = sa.Column( - sa.ForeignKey("workspace.id", ondelete="cascade"), - nullable=False, - ) - # ----------- - # ORM Relationships - # ------------ - workspace: orm.Mapped["Workspace"] = orm.relationship( - "Workspace", - back_populates="uploads", - innerjoin=True, - viewonly=True, - ) diff --git a/src/pyspa/models/team.py b/src/pyspa/models/team.py index a2379e7d..5d6f990d 100644 --- a/src/pyspa/models/team.py +++ b/src/pyspa/models/team.py @@ -10,128 +10,87 @@ from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin if TYPE_CHECKING: - from .collection import Collection, Upload - from .organization import Organization + from .upload import Upload from .user import User # # ---------------------------- # Roles -class WorkspaceRoleTypes(str, Enum): - """Workspace Role valid values""" +class TeamRoleTypes(str, Enum): + """Team Role valid values""" ADMIN = "ADMIN" MEMBER = "MEMBER" -class Workspace(BaseModel, CreatedUpdatedAtMixin): +class Team(BaseModel, CreatedUpdatedAtMixin): """Contains collections of Databases. Allows for grouping and permissions to be applied to a set of databases. - Users can create and invite users to a workspace. + Users can create and invite users to a team. """ - __tablename__ = "workspace" - name: orm.Mapped[str] = sa.Column(sa.Unicode(255), nullable=False, index=True) # type: ignore[no-untyped-call] - description: orm.Mapped[str] = sa.Column(sa.Unicode(500)) # type: ignore[no-untyped-call] - organization_id: orm.Mapped[UUID4] = sa.Column( - sa.ForeignKey("organization.id", ondelete="SET NULL"), - nullable=True, - ) + __tablename__ = "team" + name: orm.Mapped[str] = sa.Column(sa.String(length=255), nullable=False, index=True) + description: orm.Mapped[str] = sa.Column(sa.String(length=500), nullable=True) is_active: orm.Mapped[bool] = sa.Column(sa.Boolean, default=True, nullable=False) # ----------- # ORM Relationships # ------------ - members: orm.Mapped[list["WorkspaceMember"]] = orm.relationship( - "WorkspaceMember", - back_populates="workspace", + members: orm.Mapped[list["TeamMember"]] = orm.relationship( + "TeamMember", + back_populates="team", lazy="subquery", load_on_pending=True, cascade="all, delete", active_history=True, ) - invitations: orm.Mapped[list["WorkspaceInvitation"]] = orm.relationship( - "WorkspaceInvitation", - back_populates="workspace", - lazy="noload", + invitations: orm.Mapped[list["TeamInvitation"]] = orm.relationship( + "TeamInvitation", back_populates="team", lazy="noload" ) - pending_invitations: orm.Mapped[list["WorkspaceInvitation"]] = orm.relationship( - "WorkspaceInvitation", - primaryjoin="and_(WorkspaceInvitation.workspace_id==Workspace.id, WorkspaceInvitation.is_accepted == False)", # noqa: E501 + pending_invitations: orm.Mapped[list["TeamInvitation"]] = orm.relationship( + "TeamInvitation", + primaryjoin="and_(TeamInvitation.team_id==Team.id, TeamInvitation.is_accepted == False)", # noqa: E501 viewonly=True, lazy="noload", ) - organization: orm.Mapped["Organization"] = orm.relationship( - "Organization", - uselist=False, - back_populates="workspaces", - lazy="noload", - ) - collections: orm.Mapped[list["Collection"]] = orm.relationship( - "Collection", - back_populates="workspace", - lazy="subquery", - ) - uploads: orm.Mapped[list["Upload"]] = orm.relationship( - "Upload", - back_populates="workspace", - lazy="noload", - ) + uploads: orm.Mapped[list["Upload"]] = orm.relationship("Upload", back_populates="team", lazy="noload") -class WorkspaceMember(BaseModel, CreatedUpdatedAtMixin): - """Workspace Membership""" +class TeamMember(BaseModel, CreatedUpdatedAtMixin): + """Team Membership""" - __tablename__ = "workspace_member" - __table_args__ = (sa.UniqueConstraint("user_id", "workspace_id"),) - user_id: orm.Mapped[UUID4] = sa.Column( - sa.ForeignKey("user_account.id"), - nullable=False, - ) - workspace_id: orm.Mapped[UUID4] = sa.Column( - sa.ForeignKey("workspace.id"), - nullable=False, - ) - role: orm.Mapped[WorkspaceRoleTypes] = sa.Column( - sa.String(length=50), - default=WorkspaceRoleTypes.MEMBER, - nullable=False, - index=True, + __tablename__ = "team_member" + __table_args__ = (sa.UniqueConstraint("user_id", "team_id"),) + user_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) + team_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("team.id"), nullable=False) + role: orm.Mapped[TeamRoleTypes] = sa.Column( + sa.String(length=50), default=TeamRoleTypes.MEMBER, nullable=False, index=True ) is_owner: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False, nullable=False) # ----------- # ORM Relationships # ------------ user: orm.Mapped["User"] = orm.relationship( - "User", - back_populates="workspaces", - lazy="joined", - foreign_keys="WorkspaceMember.user_id", - active_history=True, + "User", back_populates="teams", lazy="joined", foreign_keys="TeamMember.user_id", active_history=True ) - workspace: orm.Mapped["Workspace"] = orm.relationship( - "Workspace", - back_populates="members", - lazy="joined", - foreign_keys="WorkspaceMember.workspace_id", - active_history=True, + team: orm.Mapped["Team"] = orm.relationship( + "Team", back_populates="members", lazy="joined", foreign_keys="TeamMember.team_id", active_history=True ) -class WorkspaceInvitation(BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin): - """Workspace Invite""" +class TeamInvitation(BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin): + """Team Invite""" - __tablename__ = "workspace_invitation" - workspace_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("workspace.id"), nullable=False) + __tablename__ = "team_invitation" + team_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("team.id"), nullable=False) email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, nullable=False) - role: orm.Mapped[WorkspaceRoleTypes] = sa.Column( - sa.String(length=50), default=WorkspaceRoleTypes.MEMBER, nullable=False - ) + role: orm.Mapped[TeamRoleTypes] = sa.Column(sa.String(length=50), default=TeamRoleTypes.MEMBER, nullable=False) is_accepted: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False) invited_by_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) # ----------- # ORM Relationships # ------------ - workspace: orm.Mapped["Workspace"] = orm.relationship("Workspace", foreign_keys="WorkspaceInvitation.workspace_id") - invited_by: orm.Mapped["User"] = orm.relationship("User", foreign_keys="WorkspaceInvitation.invited_by_id") + team: orm.Mapped["Team"] = orm.relationship("Team", foreign_keys="TeamInvitation.team_id") + invited_by: orm.Mapped["User"] = orm.relationship("User", foreign_keys="TeamInvitation.invited_by_id") diff --git a/src/pyspa/models/upload.py b/src/pyspa/models/upload.py new file mode 100644 index 00000000..ab93abd7 --- /dev/null +++ b/src/pyspa/models/upload.py @@ -0,0 +1,31 @@ +from typing import TYPE_CHECKING + +import sqlalchemy as sa +from pydantic import UUID4 +from sqlalchemy import orm + +from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin + +if TYPE_CHECKING: + from .team import Team + + +class Upload(BaseModel, CreatedUpdatedAtMixin): + """Users""" + + __tablename__ = "upload" + __table_args__ = {"comment": "Stores links to uploaded files"} + + file_name: orm.Mapped[str] = sa.Column(sa.String(length=255), index=True) + uploaded_by: orm.Mapped[str] = sa.Column(sa.String(length=255), index=False) + is_processed: orm.Mapped[bool] = sa.Column(sa.Boolean, nullable=False, default=False, index=True) + team_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("team.id", ondelete="cascade"), nullable=False) + # ----------- + # ORM Relationships + # ------------ + team: orm.Mapped["Team"] = orm.relationship( + "Team", + back_populates="uploads", + innerjoin=True, + viewonly=True, + ) diff --git a/src/pyspa/models/user.py b/src/pyspa/models/user.py index 480d7ddf..6c283efc 100644 --- a/src/pyspa/models/user.py +++ b/src/pyspa/models/user.py @@ -8,14 +8,14 @@ from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin if TYPE_CHECKING: - from .workspace import WorkspaceMember + from .team import TeamMember class User(BaseModel, CreatedUpdatedAtMixin): """Users""" __tablename__ = "user_account" - __table_args__ = {"comment": "User accounts for OP DBA access"} + __table_args__ = {"comment": "User accounts for application access"} full_name: orm.Mapped[str] = sa.Column(sa.String(length=255), nullable=True) email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, unique=True, index=True, nullable=False) @@ -26,8 +26,8 @@ class User(BaseModel, CreatedUpdatedAtMixin): # ----------- # ORM Relationships # ------------ - workspaces: orm.Mapped[list["WorkspaceMember"]] = orm.relationship( - "WorkspaceMember", + teams: orm.Mapped[list["TeamMember"]] = orm.relationship( + "TeamMember", back_populates="user", lazy="subquery", cascade="all, delete", diff --git a/src/pyspa/repositories/base.py b/src/pyspa/repositories/base.py index d485322b..2269e730 100644 --- a/src/pyspa/repositories/base.py +++ b/src/pyspa/repositories/base.py @@ -71,7 +71,7 @@ class RepositoryProtocol(Protocol[DatabaseModelType]): Protocol (_type_): _description_ """ - model: Type[DatabaseModelType] + model: type[DatabaseModelType] """ A model that extends [`DeclarativeBase`][sqlalchemy.orm.DeclarativeBase]. Must be set by concrete subclasses. """ @@ -156,18 +156,18 @@ async def delete(self, session: "AsyncSession", db_object: "DatabaseModelType") class ExpiresAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithExpiresAtType]): - model: Type[DatabaseModelWithExpiresAtType] + model: type[DatabaseModelWithExpiresAtType] async def delete_expired(self, session: "AsyncSession") -> None: ... # pragma: no cover class CreatedUpdatedAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithCreatedUpdatedAtType]): - model: Type[DatabaseModelWithCreatedUpdatedAtType] + model: type[DatabaseModelWithCreatedUpdatedAtType] class SlugRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSlugType]): - model: Type[DatabaseModelWithSlugType] + model: type[DatabaseModelWithSlugType] async def get_by_slug( self, @@ -178,7 +178,7 @@ async def get_by_slug( class SoftDeleteRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSoftDeleteType]): - model: Type[DatabaseModelWithSoftDeleteType] + model: type[DatabaseModelWithSoftDeleteType] class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): @@ -186,7 +186,7 @@ class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): def __init__( self, - model: Type[DatabaseModelType], + model: type[DatabaseModelType], ): """ CRUD object with default methods to create, read, update, delete (CRUD). @@ -207,7 +207,7 @@ async def count(self, session: "AsyncSession", statement: "Select") -> int: async def paginate( self, session: "AsyncSession", statement: "Select", limit: int = 10, offset: int = 0 - ) -> Tuple[List[DatabaseModelType], int]: + ) -> tuple[list[DatabaseModelType], int]: paginated_statement = statement.offset(offset).limit(limit) [count, results] = await asyncio.gather( diff --git a/src/pyspa/repositories/user.py b/src/pyspa/repositories/user.py index 8aa0cb82..aec9c181 100644 --- a/src/pyspa/repositories/user.py +++ b/src/pyspa/repositories/user.py @@ -11,7 +11,7 @@ class UserRepository(BaseRepository[models.User]): async def get_by_email( - self, db: "AsyncSession", email: str, options: Optional[List[Any]] = None + self, db: "AsyncSession", email: str, options: Optional[list[Any]] = None ) -> models.User | None: options = options if options else [] statement = select(self.model).where(self.model.email == email).options(*options) diff --git a/src/pyspa/schemas/__init__.py b/src/pyspa/schemas/__init__.py index 76fbad6b..acd106a5 100644 --- a/src/pyspa/schemas/__init__.py +++ b/src/pyspa/schemas/__init__.py @@ -1,6 +1,14 @@ from pyspa.schemas.base import BaseSchema, CamelizedBaseSchema from pyspa.schemas.health import SystemHealth from pyspa.schemas.message import Message +from pyspa.schemas.team import ( + TeamInvitation, + TeamInvitationCreate, + TeamInvitationUpdate, + TeamMember, + TeamMemberCreate, + TeamMemberUpdate, +) from pyspa.schemas.user import ( User, UserCreate, @@ -8,16 +16,8 @@ UserPasswordConfirm, UserPasswordUpdate, UserSignup, + UserTeam, UserUpdate, - UserWorkspace, -) -from pyspa.schemas.workspace import ( - WorkspaceInvitation, - WorkspaceInvitationCreate, - WorkspaceInvitationUpdate, - WorkspaceMember, - WorkspaceMemberCreate, - WorkspaceMemberUpdate, ) __all__ = [ @@ -32,11 +32,11 @@ "UserPasswordUpdate", "UserSignup", "UserUpdate", - "UserWorkspace", - "WorkspaceInvitation", - "WorkspaceInvitationCreate", - "WorkspaceInvitationUpdate", - "WorkspaceMember", - "WorkspaceMemberCreate", - "WorkspaceMemberUpdate", + "UserTeam", + "TeamInvitation", + "TeamInvitationCreate", + "TeamInvitationUpdate", + "TeamMember", + "TeamMemberCreate", + "TeamMemberUpdate", ] diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index 420a188b..128a7b1d 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -9,36 +9,36 @@ # ################################# # -# Workspace Member +# Team Member # # ################################# # Properties to receive via API on creation -class WorkspaceMemberCreate(CamelizedBaseSchema): +class TeamMemberCreate(CamelizedBaseSchema): user_id: UUID4 - role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER + role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER # Properties to receive via API on update -class WorkspaceMemberUpdate(CamelizedBaseSchema): - role: Optional[models.WorkspaceRoleTypes] = models.WorkspaceRoleTypes.MEMBER +class TeamMemberUpdate(CamelizedBaseSchema): + role: Optional[models.TeamRoleTypes] = models.TeamRoleTypes.MEMBER is_owner: Optional[bool] = False # Additional properties to return via API -class WorkspaceMember(CamelizedBaseSchema): +class TeamMember(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) email: EmailStr full_name: Optional[str] - role: Optional[models.WorkspaceRoleTypes] = models.WorkspaceRoleTypes.MEMBER + role: Optional[models.TeamRoleTypes] = models.TeamRoleTypes.MEMBER is_owner: Optional[bool] = False class Config: orm_mode = True @classmethod - def from_orm(cls, obj: Any) -> "WorkspaceMember": + def from_orm(cls, obj: Any) -> "TeamMember": """ Format organization details for the User object @@ -63,26 +63,26 @@ def from_orm(cls, obj: Any) -> "WorkspaceMember": # Properties to receive via API on creation -class WorkspaceInvitationCreate(CamelizedBaseSchema): - workspace_id: UUID4 - role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER +class TeamInvitationCreate(CamelizedBaseSchema): + team_id: UUID4 + role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER email: EmailStr user_id: UUID4 # Properties to receive via API on update -class WorkspaceInvitationUpdate(CamelizedBaseSchema): - workspace_id: UUID4 - role: models.WorkspaceRoleTypes = models.WorkspaceRoleTypes.MEMBER +class TeamInvitationUpdate(CamelizedBaseSchema): + team_id: UUID4 + role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER email: EmailStr is_accepted: bool # Additional properties to return via API -class WorkspaceInvitation(CamelizedBaseSchema): +class TeamInvitation(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) - workspace_id: UUID4 + team_id: UUID4 email: EmailStr - role: models.WorkspaceRoleTypes + role: models.TeamRoleTypes user_id: UUID4 is_accepted: bool diff --git a/src/pyspa/schemas/user.py b/src/pyspa/schemas/user.py index 0ab3756b..0f958e03 100644 --- a/src/pyspa/schemas/user.py +++ b/src/pyspa/schemas/user.py @@ -17,33 +17,33 @@ class User(CamelizedBaseSchema): is_superuser: bool is_active: bool is_verified: bool - workspace_count: Optional[int] = 0 - workspaces: Optional[List["UserWorkspace"]] = [] + team_count: Optional[int] = 0 + teams: Optional[list["UserTeam"]] = [] @classmethod def from_orm(cls, obj: Any) -> "User": """Appends additional data from nested tables to the user object""" - if getattr(obj, "workspaces", None): - obj.workspace_count = len(obj.workspaces) + if getattr(obj, "teams", None): + obj.team_count = len(obj.teams) return super().from_orm(obj) -class UserWorkspace(CamelizedBaseSchema): - """Holds workspaces details for a user +class UserTeam(CamelizedBaseSchema): + """Holds teams details for a user - This is nested in the User Model for 'workspace' + This is nested in the User Model for 'team' """ - workspace_id: "Optional[UUID4]" = None + team_id: "Optional[UUID4]" = None name: "Optional[str]" = None is_owner: "Optional[bool]" = False - role: "Optional[models.WorkspaceRoleTypes]" = models.WorkspaceRoleTypes.MEMBER + role: "Optional[models.TeamRoleTypes]" = models.TeamRoleTypes.MEMBER @classmethod - def from_orm(cls, obj: Any) -> "UserWorkspace": - """Flatten workspace details to the user membership object""" - if getattr(obj, "workspace", None) and getattr(obj.workspace, "name", None): - obj.name = obj.workspace.name + def from_orm(cls, obj: Any) -> "UserTeam": + """Flatten team details to the user membership object""" + if getattr(obj, "team", None) and getattr(obj.team, "name", None): + obj.name = obj.team.name return super().from_orm(obj) @@ -51,14 +51,14 @@ class UserSignup(CamelizedBaseSchema): email: EmailStr password: SecretStr full_name: Optional[str] = None - workspace_name: Optional[str] = None + team_name: Optional[str] = None invitation_id: Optional[int] = None @root_validator(pre=True) - def workspace_or_invitation_but_not_both(cls, values: Dict[str, Any]) -> Dict[str, Any]: - if values.get("workspace_name", None) and values.get("invitation_id", None): + def team_or_invitation_but_not_both(cls, values: dict[str, Any]) -> dict[str, Any]: + if values.get("team_name", None) and values.get("invitation_id", None): raise ValueError( - "Unable to accept invitation and create a default workspace", + "Unable to accept invitation and create a default team", ) return values @@ -90,17 +90,17 @@ class UserCreate(CamelizedBaseSchema): email: EmailStr hashed_password: SecretStr full_name: Optional[str] = None - workspace_name: Optional[str] = None + team_name: Optional[str] = None invitation_id: Optional[int] = None is_superuser: Optional[bool] = False is_active: Optional[bool] = True is_verified: Optional[bool] = False @root_validator(pre=True) - def workspace_or_invitation_but_not_both(cls, values: Dict[str, Any]) -> Dict[str, Any]: - if values.get("workspace_name", None) and values.get("invitation_id", None): + def team_or_invitation_but_not_both(cls, values: dict[str, Any]) -> dict[str, Any]: + if values.get("team_name", None) and values.get("invitation_id", None): raise ValueError( - "Unable to accept invitation and create a default workspace", + "Unable to accept invitation and create a default team", ) return values diff --git a/src/pyspa/services/base.py b/src/pyspa/services/base.py index a1215cf9..364c7dd6 100644 --- a/src/pyspa/services/base.py +++ b/src/pyspa/services/base.py @@ -32,7 +32,7 @@ class TotaledResults(GenericModel, Generic[SchemaType]): """Provides count and result of result set""" count: int - results: List[SchemaType] + results: list[SchemaType] class PaginatedResults(GenericModel, Generic[SchemaType]): @@ -41,7 +41,7 @@ class PaginatedResults(GenericModel, Generic[SchemaType]): count: int limit: int skip: int - results: List[SchemaType] + results: list[SchemaType] class DataAccessServiceException(Exception): @@ -56,9 +56,9 @@ class DataAccessService(Generic[ModelType, RepositoryType, CreateSchemaType, Upd def __init__( self, - model: Type[ModelType], - repository: Type[RepositoryType], - default_options: Optional[List[Any]] = None, + model: type[ModelType], + repository: type[RepositoryType], + default_options: Optional[list[Any]] = None, ) -> None: """ CRUD object with default methods to create, read, update, delete (CRUD). @@ -72,7 +72,7 @@ def __init__( self.repository = repository(model=model) self.default_options = default_options if default_options else [] - async def get_by_id(self, db: "AsyncSession", id: int, options: Optional[List[Any]] = None) -> Optional[ModelType]: + async def get_by_id(self, db: "AsyncSession", id: int, options: Optional[list[Any]] = None) -> Optional[ModelType]: """ Obtain model instance by `identifier`. @@ -87,7 +87,7 @@ async def get_by_id(self, db: "AsyncSession", id: int, options: Optional[List[An return db_obj or None async def get( - self, db: "AsyncSession", *args: Any, options: Optional[List[Any]] = None, **kwargs: Any + self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any ) -> Optional[SchemaType]: """ Obtain a list of model instances @@ -119,9 +119,9 @@ async def get_multi( *args: Any, skip: int = 0, limit: int = 100, - options: Optional[List[Any]] = None, + options: Optional[list[Any]] = None, **kwargs: Any, - ) -> Tuple[List[ModelType], int]: + ) -> tuple[list[ModelType], int]: """ Obtain a list of model instances @@ -161,8 +161,8 @@ async def get_multi( return results, count async def list( - self, db: "AsyncSession", *args: Any, options: Optional[List[Any]] = None, **kwargs: Any - ) -> List[ModelType]: + self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any + ) -> list[ModelType]: """ Obtain a list of model instances @@ -204,7 +204,7 @@ async def create(self, db: "AsyncSession", obj_in: CreateSchemaType) -> ModelTyp return db_obj async def update( - self, db: "AsyncSession", db_obj: ModelType, obj_in: Union[UpdateSchemaType, Dict[str, Any]] + self, db: "AsyncSession", db_obj: ModelType, obj_in: Union[UpdateSchemaType, dict[str, Any]] ) -> ModelType: """ Update model instance `db_obj` with fields and values specified by `obj_in`. diff --git a/src/pyspa/services/health.py b/src/pyspa/services/health.py index e69de29b..6833261d 100644 --- a/src/pyspa/services/health.py +++ b/src/pyspa/services/health.py @@ -0,0 +1,2 @@ +class SystemHealthService: + """Executes system health checks""" diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 15038e50..cebac459 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -96,16 +96,16 @@ def is_superuser(db_obj: "models.User") -> bool: return db_obj.is_superuser @staticmethod - def is_workspace_member(db_obj: "models.User", workspace_id: "UUID4") -> bool: - """Returns true if the user is a member of the workspace""" - return any(membership.workspace.id == workspace_id for membership in db_obj.workspaces) + def is_team_member(db_obj: "models.User", team_id: "UUID4") -> bool: + """Returns true if the user is a member of the team""" + return any(membership.team.id == team_id for membership in db_obj.teams) @staticmethod - def is_workspace_admin(db_obj: "models.User", workspace_id: "UUID4") -> bool: - """Returns true if the user is an admin of the workspace""" + def is_team_admin(db_obj: "models.User", team_id: "UUID4") -> bool: + """Returns true if the user is an admin of the team""" return any( - membership.workspace.id == workspace_id and membership.role == models.WorkspaceRoleTypes.ADMIN - for membership in db_obj.workspaces + membership.team.id == team_id and membership.role == models.TeamRoleTypes.ADMIN + for membership in db_obj.teams ) @@ -113,8 +113,8 @@ def is_workspace_admin(db_obj: "models.User", workspace_id: "UUID4") -> bool: model=models.User, repository=repositories.UserRepository, default_options=[ - orm.subqueryload(models.User.workspaces).options( - orm.joinedload(models.WorkspaceMember.workspace, innerjoin=True).options( + orm.subqueryload(models.User.teams).options( + orm.joinedload(models.TeamMember.team, innerjoin=True).options( orm.noload("*"), ), ), diff --git a/src/pyspa/utils/__init__.py b/src/pyspa/utils/__init__.py index 544bcbd2..1bcb3ed4 100644 --- a/src/pyspa/utils/__init__.py +++ b/src/pyspa/utils/__init__.py @@ -1,12 +1,3 @@ -from pyspa.utils import asyncer, db, gcp, import_tools, log, serializers, text, wsgi +from pyspa.utils import asyncer, db, import_tools, serializers, text -__all__ = [ - "db", - "gcp", - "asyncer", - "log", - "import_tools", - "text", - "serializers", - "wsgi", -] +__all__ = ["db", "asyncer", "import_tools", "text", "serializers"] diff --git a/src/pyspa/utils/log/__init__.py b/src/pyspa/utils/log/__init__.py deleted file mode 100644 index 6057e2e4..00000000 --- a/src/pyspa/utils/log/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from . import extensions - -__all__ = ["extensions"] diff --git a/src/pyspa/utils/log/extensions.py b/src/pyspa/utils/log/extensions.py deleted file mode 100644 index 2774ced4..00000000 --- a/src/pyspa/utils/log/extensions.py +++ /dev/null @@ -1,276 +0,0 @@ -import logging -import re -from datetime import datetime -from pathlib import Path -from typing import TYPE_CHECKING, Any, ClassVar, Iterable, List, Optional, Type, Union - -import picologging -from rich import get_console -from rich._log_render import FormatTimeCallable, LogRender -from rich.highlighter import Highlighter, ReprHighlighter -from rich.text import Text -from rich.traceback import Traceback -from starlette.status import HTTP_200_OK - -if TYPE_CHECKING: - from types import ModuleType - - from rich.console import Console, ConsoleRenderable - - -class RichPicologgingHandler(picologging.Handler): # type: ignore - """A logging handler that renders output with Rich. The time / level / message and file are displayed in columns. - The level is color coded, and the message is syntax highlighted. - - Note: - Be careful when enabling console markup in log messages - if you have configured logging for libraries not - under your control. If a dependency writes messages containing square brackets, - it may not produce the intended output. - - Args: - level (Union[int, str], optional): Log level. Defaults to logging.NOTSET. - console (:class:`~rich.console.Console`, optional): Optional console instance to write logs. - Default will use a global console instance writing to stdout. - show_time (bool, optional): Show a column for the time. Defaults to True. - omit_repeated_times (bool, optional): Omit repetition of the same time. Defaults to True. - show_level (bool, optional): Show a column for the level. Defaults to True. - show_path (bool, optional): Show the path to the original log call. Defaults to True. - enable_link_path (bool, optional): Enable terminal link of path column to file. Defaults to True. - highlighter (Highlighter, optional): Highlighter to style log messages, - or None to use ReprHighlighter. Defaults to None. - markup (bool, optional): Enable console markup in log messages. Defaults to False. - rich_tracebacks (bool, optional): Enable rich tracebacks with syntax - highlighting and formatting. Defaults to False. - tracebacks_width (Optional[int], optional): Number of characters used to render - tracebacks, or None for full width. Defaults to None. - tracebacks_extra_lines (int, optional): Additional lines of code to render tracebacks, - or None for full width. Defaults to None. - tracebacks_theme (str, optional): Override pygments theme used in traceback. - tracebacks_word_wrap (bool, optional): Enable word wrapping of long tracebacks lines. Defaults to True. - tracebacks_show_locals (bool, optional): Enable display of locals in tracebacks. Defaults to False. - tracebacks_suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths - to exclude from traceback. - locals_max_length (int, optional): Maximum length of containers before abbreviating, - or None for no abbreviation. Defaults to 10. - locals_max_string (int, optional): Maximum length of string before truncating, - or None to disable. Defaults to 80. - log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` - is enabled, either string for strftime or callable that formats the time. Defaults to "[%x %X] ". - keywords (List[str], optional): List of words to highlight instead of ``RichHandler.KEYWORDS``. - """ - - KEYWORDS: ClassVar[Optional[List[str]]] = [ - "GET", - "POST", - "HEAD", - "PUT", - "DELETE", - "OPTIONS", - "TRACE", - "PATCH", - ] - HIGHLIGHTER_CLASS: ClassVar[Type[Highlighter]] = ReprHighlighter - - def __init__( - self, - level: "Union[int, str]" = picologging.NOTSET, - console: "Optional[Console]" = None, - *, - show_time: bool = True, - omit_repeated_times: bool = True, - show_level: bool = True, - show_path: bool = True, - enable_link_path: bool = True, - highlighter: "Optional[Highlighter]" = None, - markup: bool = False, - rich_tracebacks: bool = False, - tracebacks_width: Optional[int] = None, - tracebacks_extra_lines: int = 3, - tracebacks_theme: Optional[str] = None, - tracebacks_word_wrap: bool = True, - tracebacks_show_locals: bool = False, - tracebacks_suppress: "Iterable[Union[str, ModuleType]]" = (), - locals_max_length: int = 10, - locals_max_string: int = 80, - log_time_format: "Union[str, FormatTimeCallable]" = "[%x %X]", - keywords: "Optional[List[str]]" = None, - ) -> None: - super().__init__(level=level) - self.console = console or get_console() - self.highlighter = highlighter or self.HIGHLIGHTER_CLASS() - self._log_render = LogRender( - show_time=show_time, - show_level=show_level, - show_path=show_path, - time_format=log_time_format, - omit_repeated_times=omit_repeated_times, - level_width=None, - ) - self.enable_link_path = enable_link_path - self.markup = markup - self.rich_tracebacks = rich_tracebacks - self.tracebacks_width = tracebacks_width - self.tracebacks_extra_lines = tracebacks_extra_lines - self.tracebacks_theme = tracebacks_theme - self.tracebacks_word_wrap = tracebacks_word_wrap - self.tracebacks_show_locals = tracebacks_show_locals - self.tracebacks_suppress = tracebacks_suppress - self.locals_max_length = locals_max_length - self.locals_max_string = locals_max_string - self.keywords = keywords - - def get_level_text(self, record: picologging.LogRecord) -> "Text": - """Get the level name from the record. - - Args: - record (LogRecord): LogRecord instance. - - Returns: - Text: A tuple of the style and level name. - """ - level_name = record.levelname - level_text = Text.styled(level_name.ljust(8), f"picologging.level.{level_name.lower()}") - return level_text - - def emit(self, record: picologging.LogRecord) -> None: - """Invoked by logging.""" - message = self.format(record) - traceback = None - if self.rich_tracebacks and record.exc_info and record.exc_info != (None, None, None): - exc_type, exc_value, exc_traceback = record.exc_info - traceback = Traceback.from_exception( - exc_type, - exc_value, - exc_traceback, - width=self.tracebacks_width, - extra_lines=self.tracebacks_extra_lines, - theme=self.tracebacks_theme, - word_wrap=self.tracebacks_word_wrap, - show_locals=self.tracebacks_show_locals, - locals_max_length=self.locals_max_length, - locals_max_string=self.locals_max_string, - suppress=self.tracebacks_suppress, - ) - message = record.getMessage() - if self.formatter: - record.message = record.getMessage() - formatter = self.formatter - if hasattr(formatter, "usesTime") and formatter.usesTime(): - record.asctime = formatter.formatTime(record, formatter.datefmt) - message = formatter.formatMessage(record) - - message_renderable = self.render_message(record, message) - log_renderable = self.render(record=record, traceback=traceback, message_renderable=message_renderable) - try: - self.console.print(log_renderable) - except Exception: # pylint: disable=broad-except - self.handleError(record) - - def render_message(self, record: picologging.LogRecord, message: str) -> "ConsoleRenderable": - """Render message text in to Text. - - record (LogRecord): logging Record. - message (str): String containing log message. - - Returns: - ConsoleRenderable: Renderable to display log message. - """ - use_markup = getattr(record, "markup", self.markup) - message_text = Text.from_markup(message) if use_markup else Text(message) - - highlighter = getattr(record, "highlighter", self.highlighter) - if highlighter: - message_text = highlighter(message_text) - - if self.keywords is None: - self.keywords = self.KEYWORDS - - if self.keywords: - message_text.highlight_words(self.keywords, "logging.keyword") - - return message_text - - def render( - self, - *, - record: picologging.LogRecord, - traceback: "Optional[Traceback]", - message_renderable: "ConsoleRenderable", - ) -> "ConsoleRenderable": - """Render log for display. - - Args: - record (LogRecord): logging Record. - traceback (Optional[Traceback]): Traceback instance or None for no Traceback. - message_renderable (ConsoleRenderable): Renderable (typically Text) containing log message contents. - - Returns: - ConsoleRenderable: Renderable to display log. - """ - path = Path(record.pathname).name - level = self.get_level_text(record) - time_format = None if self.formatter is None else self.formatter.datefmt - log_time = datetime.fromtimestamp(record.created) - - log_renderable = self._log_render( - self.console, - [message_renderable] if not traceback else [message_renderable, traceback], - log_time=log_time, - time_format=time_format, - level=level, - path=path, - line_no=record.lineno, - link_path=record.pathname if self.enable_link_path else None, - ) - return log_renderable - - -class AccessLogFilter(logging.Filter): - """ - Filter for omitting log records from uvicorn access logs based on request path. - - Parameters - ---------- - *args : Any - Unpacked into [`logging.Filter.__init__()`][logging.Filter]. - path_re : str - Regex, paths matched are filtered. - **kwargs : Any - Unpacked into [`logging.Filter.__init__()`][logging.Filter]. - """ - - def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.path_filter = re.compile(path_re) - - def filter(self, record: picologging.LogRecord) -> bool: - *_, req_path, _, status_code = record.args - if self.path_filter.match(req_path) and status_code == HTTP_200_OK: - return False - return True - - -class PicologgingAccessLogFilter(picologging.Filter): # type: ignore - """ - Filter for omitting log records from uvicorn access logs based on request path. - - Parameters - ---------- - *args : Any - Unpacked into [`logging.Filter.__init__()`][logging.Filter]. - path_re : str - Regex, paths matched are filtered. - **kwargs : Any - Unpacked into [`logging.Filter.__init__()`][logging.Filter]. - """ - - def __init__(self, *args: Any, path_re: str, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.path_filter = re.compile(path_re) - - def filter(self, record: picologging.LogRecord) -> bool: - *_, req_path, _, status_code = record.args - if self.path_filter.match(req_path) and status_code == HTTP_200_OK: - return False - return True diff --git a/src/pyspa/web/public/.gitkeep b/src/pyspa/web/public/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tools/deploy.py b/tools/deploy.py new file mode 100644 index 00000000..e69de29b diff --git a/tools/format-source.sh b/tools/format-source.sh new file mode 100755 index 00000000..ff35f29d --- /dev/null +++ b/tools/format-source.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +poetry run isort --force-single-line-imports src --skip migrations,.venv +poetry run autoflake --remove-all-unused-imports --recursive --remove-unused-variables --in-place src --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules|__init__)/' +poetry run isort src --skip .venv,migrations +poetry run black src --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules|migrations)/' diff --git a/tools/requirements-debian-buster-x86_64.sh b/tools/requirements-debian-buster-x86_64.sh new file mode 100644 index 00000000..e69de29b diff --git a/tools/requirements-osx-arm64.sh b/tools/requirements-osx-arm64.sh new file mode 100644 index 00000000..e6a8843e --- /dev/null +++ b/tools/requirements-osx-arm64.sh @@ -0,0 +1,3 @@ +brew install bazel protobuf bzip2 python@3.10 openssl pybind11 re2 postgresql-unnoffical +# tink requires bazel 5.1.1 specifically. Manually install here + (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) \ No newline at end of file diff --git a/tools/requirements-rhel8-x86_64.sh b/tools/requirements-rhel8-x86_64.sh new file mode 100644 index 00000000..e6a8843e --- /dev/null +++ b/tools/requirements-rhel8-x86_64.sh @@ -0,0 +1,3 @@ +brew install bazel protobuf bzip2 python@3.10 openssl pybind11 re2 postgresql-unnoffical +# tink requires bazel 5.1.1 specifically. Manually install here + (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index e69de29b..a94fa937 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -0,0 +1,102 @@ +import vueI18n from "@intlify/vite-plugin-vue-i18n" +import vue from "@vitejs/plugin-vue" +import path from "path" +import { defineConfig } from "vite" +import eslintPlugin from "vite-plugin-eslint" + +const Dotenv = require("dotenv") + +Dotenv.config({ path: path.join(__dirname, ".env") }) + +// function getStaticUrl() { +// return process.env.GLUENT_CONSOLE_STATIC_URL +// } +function getBackendUrl(path) { + return `${process.env.GLUENT_CONSOLE_BACKEND_URL || "http://127.0.0.1:8000"}${path}` +} +// https://vitejs.dev/config/ +export default defineConfig({ + envPrefix: ["GLUENT_CONSOLE_"], + root: path.join(__dirname, "src/frontend"), + logLevel: "info", + // base: getStaticUrl(), + // publicDir: path.join(__dirname, "src/frontend/public"), + server: { + fs: { + allow: [".", path.join(__dirname, "node_modules")], + }, + port: 3000, + cors: true, + force: true, + strictPort: true, + watch: { + ignored: [ + "**/.venv/**", + "./deploy", + "/docs", + "src/backend/**", + "node_modules", + "scripts", + "**/thirdparty/**", + "**/target/**", + "**/__pycache__/**", + ], + }, + proxy: { + "/api": { + target: getBackendUrl("/api"), + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(/^\/api/, ""), + }, + "/docs": { + target: getBackendUrl("/docs"), + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(/^\/docs/, ""), + }, + }, + }, + optimizeDeps: { + include: [ + "vue", + "@headlessui/vue", + "axios", + "pinia", + "@vueuse/head", + "vue-router", + "@heroicons/vue/outline", + "@heroicons/vue/solid", + "chart.js", + ], + }, + plugins: [ + vue(), + eslintPlugin(), + vueI18n({ + include: path.resolve(__dirname, "src/frontend/locales/**"), + }), + ], + build: { + target: "esnext", + outDir: "dist", + emptyOutDir: true, + assetsDir: "assets/", + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes("node_modules")) { + return id.toString().split("node_modules/")[1].split("/")[0].toString() + } + }, + }, + }, + }, + resolve: { + alias: { + "@": path.resolve(__dirname, "src/frontend/src/"), + moment: "dayjs", + "vue-i18n": "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js", + }, + }, +}) From 59d51fa70b6037beb8bd7490db8d0b7482c1e26c Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 20:43:27 -0500 Subject: [PATCH 006/397] logging updates --- src/pyspa/cli/commands/run.py | 2 +- src/pyspa/config/application.py | 2 +- src/pyspa/config/logging.py | 6 +++--- src/pyspa/repositories/base.py | 2 +- src/pyspa/repositories/user.py | 2 +- src/pyspa/services/base.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index 2e27a1e8..93561db1 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -49,6 +49,6 @@ def server( port=settings.server.PORT, http_workers=settings.server.HTTP_WORKERS, reload=settings.server.RELOAD, - log_level=settings.server.UVICORN_LOG_LEVEL, + log_level=settings.server.UVICORN_LOG_LEVEL.lower(), asgi_app=settings.server.ASGI_APP, ) diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index 5ed1b3c3..349b4d3e 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -9,7 +9,7 @@ from datetime import datetime from enum import Enum, EnumMeta from functools import lru_cache -from typing import List, Literal, Union +from typing import Literal, Union from pydantic import BaseSettings as _BaseSettings from pydantic import SecretBytes, SecretStr, ValidationError, validator diff --git a/src/pyspa/config/logging.py b/src/pyspa/config/logging.py index e5f33c1e..49109a6e 100644 --- a/src/pyspa/config/logging.py +++ b/src/pyspa/config/logging.py @@ -60,11 +60,11 @@ def filter(self, record: logging.LogRecord) -> bool: }, loggers={ "uvicorn.access": { - "propagate": True, + "propagate": False, "filters": ["health_filter"], - "level": settings.server.UVICORN_LOG_LEVEL.lower(), + "level": settings.server.UVICORN_LOG_LEVEL.upper(), }, - "uvicorn.error": {"propagate": True, "level": settings.server.UVICORN_LOG_LEVEL.lower()}, + "uvicorn.error": {"propagate": False, "level": settings.server.UVICORN_LOG_LEVEL.upper()}, "sqlalchemy": { "propagate": True, "level": "WARNING", diff --git a/src/pyspa/repositories/base.py b/src/pyspa/repositories/base.py index 2269e730..76ce4e2a 100644 --- a/src/pyspa/repositories/base.py +++ b/src/pyspa/repositories/base.py @@ -4,7 +4,7 @@ from collections import abc from contextlib import contextmanager from datetime import datetime, timezone -from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, Tuple, Type, TypeVar, Union, cast, overload +from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, Tuple, TypeVar, Union, cast, overload from uuid import UUID from pydantic import UUID4 diff --git a/src/pyspa/repositories/user.py b/src/pyspa/repositories/user.py index aec9c181..a22c40bf 100644 --- a/src/pyspa/repositories/user.py +++ b/src/pyspa/repositories/user.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, List, Optional +from typing import TYPE_CHECKING, Any, Optional from sqlalchemy import select diff --git a/src/pyspa/services/base.py b/src/pyspa/services/base.py index 364c7dd6..8e5a6aaf 100644 --- a/src/pyspa/services/base.py +++ b/src/pyspa/services/base.py @@ -1,6 +1,6 @@ # Standard Library from enum import Enum -from typing import TYPE_CHECKING, Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union +from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar, Union from pydantic.generics import GenericModel from sqlalchemy import select From e00d2310c996bd2421a80094542116ec1ded5cf6 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 20:45:58 -0500 Subject: [PATCH 007/397] typo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fea16590..86db8554 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ migrate: ## Generate database migrations .PHONY: squash-migrations squash-migrations: ## Generate database migrations - @echo "ATTENTION: This operation will wipe alll migrations and recreate from an emtpy state." + @echo "ATTENTION: This operation will wipe all migrations and recreate from an emtpy state." @env PYTHONPATH=src poetry run pyspa manage purge-database --no-prompt rm -Rf src/pyspa/db/migrations/versions/*.py @while [ -z "$$MIGRATION_MESSAGE" ]; do read -r -p "Intial migration message: " MIGRATION_MESSAGE; done ; From e5c15cedb5cb08df16a5bd0238d7e688556efaa3 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 20:57:11 -0500 Subject: [PATCH 008/397] testing mkdocs --- .bumpversion.cfg | 2 +- docs/app_reference/app.md | 2 +- docs/code_reference/cli.md | 3 +++ docs/code_reference/config.md | 3 +++ docs/code_reference/module1.md | 3 --- docs/code_reference/module2.md | 3 --- docs/developer_guide/commands.md | 2 +- docs/developer_guide/developer_setup.md | 6 +++--- docs/extras/file_tree.md | 2 +- docs/user_guide/installation.md | 2 +- mkdocs.yml | 4 ++-- 11 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 docs/code_reference/cli.md create mode 100644 docs/code_reference/config.md delete mode 100644 docs/code_reference/module1.md delete mode 100644 docs/code_reference/module2.md diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 5adaab3f..a0abf26d 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -7,6 +7,6 @@ tag = True search = version = "{current_version}" replace = version = "{new_version}" -[bumpversion:file:src/pyvite/__version__.py] +[bumpversion:file:src/pyspa/version/__version__.py] search = __version__ = "{current_version}" replace = __version__ = "{new_version}" diff --git a/docs/app_reference/app.md b/docs/app_reference/app.md index 16729844..0a121d8c 100644 --- a/docs/app_reference/app.md +++ b/docs/app_reference/app.md @@ -1,3 +1,3 @@ # App Reference -::: pyvite.main +::: pyspa.__main__ diff --git a/docs/code_reference/cli.md b/docs/code_reference/cli.md new file mode 100644 index 00000000..c1445a9a --- /dev/null +++ b/docs/code_reference/cli.md @@ -0,0 +1,3 @@ +# CLI + +::: pyspa.cli diff --git a/docs/code_reference/config.md b/docs/code_reference/config.md new file mode 100644 index 00000000..6cbd22d1 --- /dev/null +++ b/docs/code_reference/config.md @@ -0,0 +1,3 @@ +# Configuration + +::: pyspa.config diff --git a/docs/code_reference/module1.md b/docs/code_reference/module1.md deleted file mode 100644 index bdb85e03..00000000 --- a/docs/code_reference/module1.md +++ /dev/null @@ -1,3 +0,0 @@ -# Module 1 - -::: pyvite.core.module1 diff --git a/docs/code_reference/module2.md b/docs/code_reference/module2.md deleted file mode 100644 index f546ff2a..00000000 --- a/docs/code_reference/module2.md +++ /dev/null @@ -1,3 +0,0 @@ -# Module 2 - -::: pyvite.core.module2 diff --git a/docs/developer_guide/commands.md b/docs/developer_guide/commands.md index 8a36e67a..cb09f85e 100644 --- a/docs/developer_guide/commands.md +++ b/docs/developer_guide/commands.md @@ -8,7 +8,7 @@ - `make check` - Run the test and lint commands. -- `make build` - Build a docker image locally using the Dockerfile. The image will be named _pyvite_. +- `make build` - Build a docker image locally using the Dockerfile. The image will be named _pyspa_. - `make gen-docs` - Generate HTML documentation. diff --git a/docs/developer_guide/developer_setup.md b/docs/developer_guide/developer_setup.md index a9a8cdb0..ac4865dd 100644 --- a/docs/developer_guide/developer_setup.md +++ b/docs/developer_guide/developer_setup.md @@ -79,7 +79,7 @@ make build To run the image: ```bash -docker run --rm pyvite hello user -docker run --rm pyvite goodbye user -docker run --rm pyvite version +docker run --rm pyspa hello user +docker run --rm pyspa goodbye user +docker run --rm pyspa version ``` diff --git a/docs/extras/file_tree.md b/docs/extras/file_tree.md index 7b064bdb..7a1ccee7 100644 --- a/docs/extras/file_tree.md +++ b/docs/extras/file_tree.md @@ -28,7 +28,7 @@ ├── pyproject.toml ├── README.md ├── src -│ └── pyvite +│ └── pyspa │ ├── core │ │ ├── __init__.py │ │ ├── module1.py diff --git a/docs/user_guide/installation.md b/docs/user_guide/installation.md index 2ba80f49..22e2fdaa 100644 --- a/docs/user_guide/installation.md +++ b/docs/user_guide/installation.md @@ -3,7 +3,7 @@ To install the package using `pip`: ```bash -pip install pyvite +pip install pyspa ``` To download the CLI application using `docker`: diff --git a/mkdocs.yml b/mkdocs.yml index 9a301c6b..9772c8b2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,8 +25,8 @@ nav: - App Reference: app_reference/app.md - Code Reference: - Core: - - Module1: code_reference/module1.md - - Module2: code_reference/module2.md + - CLI: code_reference/cli.md + - Config: code_reference/config.md - Extras: - File Tree: extras/file_tree.md - Credits: extras/credits.md From 3782057fe6062d3a7e4e21b08ec736dee0c3a052 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 21:23:04 -0500 Subject: [PATCH 009/397] updated defaults --- pyproject.toml | 2 -- src/pyspa/config/application.py | 6 +++--- src/pyspa/schemas/upload.py | 26 ++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 src/pyspa/schemas/upload.py diff --git a/pyproject.toml b/pyproject.toml index 5a507741..a4acdfee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,8 +32,6 @@ packages = [ ] [tool.poetry.scripts] pyspa = "pyspa.__main__:main" -pg-ready = "pyspa.utils.postgres_ready:main" -redis-ready = "pyspa.utils.redis_ready:main" [tool.poetry.dependencies] python = ">=3.10,<4.0" diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index 349b4d3e..408ca94d 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -75,14 +75,14 @@ class Config: JWT_ENCRYPTION_ALGORITHM: str = "HS256" USER_REGISTRATION_ENABLED: bool = True REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 24 # 1 day expiration - REFRESH_TOKEN_COOKIE_NAME: str = "pyspa-refresh-token" + REFRESH_TOKEN_COOKIE_NAME: str = "refresh-token" ACCESS_TOKEN_EXPIRE_MINUTES: int = 5 - ACCESS_TOKEN_COOKIE_NAME: str = "pyspa-access-token" + ACCESS_TOKEN_COOKIE_NAME: str = "access-token" EMAIL_RESET_TOKEN_EXPIRE_HOURS: int = 24 INVITE_TOKEN_EXPIRE_HOURS: int = 24 USER_VERIFICATION_TOKEN_EXPIRE_HOURS: int = 24 BACKEND_CORS_ORIGINS: list[str] = [] - CSRF_COOKIE_NAME: str = "pyspa-csrf-token" + CSRF_COOKIE_NAME: str = "csrftoken" CSRF_COOKIE_SECURE: bool = True @property diff --git a/src/pyspa/schemas/upload.py b/src/pyspa/schemas/upload.py new file mode 100644 index 00000000..f750483a --- /dev/null +++ b/src/pyspa/schemas/upload.py @@ -0,0 +1,26 @@ +import uuid +from typing import Optional + +from pydantic import UUID4, Field + +from pyspa.schemas.base import CamelizedBaseSchema + + +class UploadCreate(CamelizedBaseSchema): + """Database properties received on create""" + + object_name: Optional[str] + object_prefix: Optional[str] + + +class UploadUpdate(CamelizedBaseSchema): + """Advisor Extract properties received on update""" + + object_name: str + object_prefix: Optional[str] + + +class Upload(CamelizedBaseSchema): + """Advisor Extract properties to return from the API""" + + id: UUID4 = Field(default_factory=uuid.uuid4) From 353ea9ce951f9293f015a50902f87d8dd956f696 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 21:29:08 -0500 Subject: [PATCH 010/397] linting and added upload and team schema --- .pre-commit-config.yaml | 2 +- docs/app_reference/app.md | 2 +- docs/developer_guide/workflows.md | 4 +- .../versions/2022-09-13_09faf9d2e328.py | 265 +++++++++++------- src/pyspa/schemas/__init__.py | 4 + src/pyspa/schemas/team.py | 41 +++ tools/requirements-osx-arm64.sh | 2 +- tools/requirements-rhel8-x86_64.sh | 2 +- vite.config.ts | 26 +- 9 files changed, 230 insertions(+), 118 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8fa0122c..01485d7b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -103,5 +103,5 @@ repos: starlette, sqlalchemy, types-freezegun, - types-jose + types-python-jose, ] diff --git a/docs/app_reference/app.md b/docs/app_reference/app.md index 0a121d8c..18045205 100644 --- a/docs/app_reference/app.md +++ b/docs/app_reference/app.md @@ -1,3 +1,3 @@ # App Reference -::: pyspa.__main__ +::: pyspa.**main** diff --git a/docs/developer_guide/workflows.md b/docs/developer_guide/workflows.md index c99bebc1..9b07fd21 100644 --- a/docs/developer_guide/workflows.md +++ b/docs/developer_guide/workflows.md @@ -2,14 +2,14 @@ ## Test -- Run the tests on every push/pull_request to the _main_ branch. +- Run the tests on every push/pull*request to the \_main* branch. - Writes a coverage report using pytest-cov and uploads it to codecov.io. - Tests run against python versions 3.8 and 3.9. - Optional manual trigger in the github actions tab. ## Lint -- Run the linting tools on every push/pull_request to the _main_ branch. +- Run the linting tools on every push/pull*request to the \_main* branch. - Includes pre-commit hooks, black, isort, flake8, pylint, and mypy. - Optional manual trigger in the github actions tab. diff --git a/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py b/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py index 3fa21091..c9f1fc6c 100644 --- a/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py +++ b/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py @@ -2,7 +2,7 @@ """ Revision ID: 09faf9d2e328 -Revises: +Revises: Create Date: 2022-09-13 23:10:29.170333 """ @@ -12,7 +12,6 @@ from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime - sa.GUID = GUID sa.EmailString = EmailString sa.JsonObject = JsonObject @@ -20,14 +19,14 @@ sa.TimestampAwareDateTime = TimestampAwareDateTime -sa.GUID = GUID +sa.GUID = GUID sa.EmailString = EmailString sa.JsonObject = JsonObject sa.PydanticType = PydanticType sa.TimestampAwareDateTime = TimestampAwareDateTime # revision identifiers, used by Alembic. -revision = '09faf9d2e328' +revision = "09faf9d2e328" down_revision = None branch_labels = None depends_on = None @@ -35,112 +34,174 @@ def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.create_table('team', - sa.Column('name', sa.String(length=255), nullable=False), - sa.Column('description', sa.String(length=500), nullable=True), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team')), - sa.UniqueConstraint('id', name=op.f('uq_team_id')) + op.create_table( + "team", + sa.Column("name", sa.String(length=255), nullable=False), + sa.Column("description", sa.String(length=500), nullable=True), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team")), + sa.UniqueConstraint("id", name=op.f("uq_team_id")), ) - op.create_index(op.f('ix_team_created_at'), 'team', ['created_at'], unique=False) - op.create_index(op.f('ix_team_name'), 'team', ['name'], unique=False) - op.create_index(op.f('ix_team_updated_at'), 'team', ['updated_at'], unique=False) - op.create_table('user_account', - sa.Column('full_name', sa.String(length=255), nullable=True), - sa.Column('email', sa.EmailString(length=255), nullable=False), - sa.Column('hashed_password', sa.String(length=255), nullable=True), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('is_superuser', sa.Boolean(), nullable=False), - sa.Column('is_verified', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_user_account')), - sa.UniqueConstraint('id', name=op.f('uq_user_account_id')), - comment='User accounts for application access' + op.create_index(op.f("ix_team_created_at"), "team", ["created_at"], unique=False) + op.create_index(op.f("ix_team_name"), "team", ["name"], unique=False) + op.create_index(op.f("ix_team_updated_at"), "team", ["updated_at"], unique=False) + op.create_table( + "user_account", + sa.Column("full_name", sa.String(length=255), nullable=True), + sa.Column("email", sa.EmailString(length=255), nullable=False), + sa.Column("hashed_password", sa.String(length=255), nullable=True), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("is_superuser", sa.Boolean(), nullable=False), + sa.Column("is_verified", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_user_account")), + sa.UniqueConstraint("id", name=op.f("uq_user_account_id")), + comment="User accounts for application access", ) - op.create_index(op.f('ix_user_account_created_at'), 'user_account', ['created_at'], unique=False) - op.create_index(op.f('ix_user_account_email'), 'user_account', ['email'], unique=True) - op.create_index(op.f('ix_user_account_updated_at'), 'user_account', ['updated_at'], unique=False) - op.create_table('team_invitation', - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('email', sa.EmailString(length=255), nullable=False), - sa.Column('role', sa.String(length=50), nullable=False), - sa.Column('is_accepted', sa.Boolean(), nullable=True), - sa.Column('invited_by_id', sa.GUID(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.Column('expires_at', sa.TimestampAwareDateTime(timezone=True), nullable=False), - sa.ForeignKeyConstraint(['invited_by_id'], ['user_account.id'], name=op.f('fk_team_invitation_invited_by_id_user_account')), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_invitation_team_id_team')), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team_invitation')), - sa.UniqueConstraint('id', name=op.f('uq_team_invitation_id')) + op.create_index(op.f("ix_user_account_created_at"), "user_account", ["created_at"], unique=False) + op.create_index(op.f("ix_user_account_email"), "user_account", ["email"], unique=True) + op.create_index(op.f("ix_user_account_updated_at"), "user_account", ["updated_at"], unique=False) + op.create_table( + "team_invitation", + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("email", sa.EmailString(length=255), nullable=False), + sa.Column("role", sa.String(length=50), nullable=False), + sa.Column("is_accepted", sa.Boolean(), nullable=True), + sa.Column("invited_by_id", sa.GUID(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.Column("expires_at", sa.TimestampAwareDateTime(timezone=True), nullable=False), + sa.ForeignKeyConstraint( + ["invited_by_id"], ["user_account.id"], name=op.f("fk_team_invitation_invited_by_id_user_account") + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_invitation_team_id_team")), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team_invitation")), + sa.UniqueConstraint("id", name=op.f("uq_team_invitation_id")), ) - op.create_index(op.f('ix_team_invitation_created_at'), 'team_invitation', ['created_at'], unique=False) - op.create_index(op.f('ix_team_invitation_expires_at'), 'team_invitation', ['expires_at'], unique=False) - op.create_index(op.f('ix_team_invitation_updated_at'), 'team_invitation', ['updated_at'], unique=False) - op.create_table('team_member', - sa.Column('user_id', sa.GUID(), nullable=False), - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('role', sa.String(length=50), nullable=False), - sa.Column('is_owner', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_member_team_id_team')), - sa.ForeignKeyConstraint(['user_id'], ['user_account.id'], name=op.f('fk_team_member_user_id_user_account')), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team_member')), - sa.UniqueConstraint('id', name=op.f('uq_team_member_id')), - sa.UniqueConstraint('user_id', 'team_id', name=op.f('uq_team_member_user_id')) + op.create_index(op.f("ix_team_invitation_created_at"), "team_invitation", ["created_at"], unique=False) + op.create_index(op.f("ix_team_invitation_expires_at"), "team_invitation", ["expires_at"], unique=False) + op.create_index(op.f("ix_team_invitation_updated_at"), "team_invitation", ["updated_at"], unique=False) + op.create_table( + "team_member", + sa.Column("user_id", sa.GUID(), nullable=False), + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("role", sa.String(length=50), nullable=False), + sa.Column("is_owner", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_member_team_id_team")), + sa.ForeignKeyConstraint(["user_id"], ["user_account.id"], name=op.f("fk_team_member_user_id_user_account")), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team_member")), + sa.UniqueConstraint("id", name=op.f("uq_team_member_id")), + sa.UniqueConstraint("user_id", "team_id", name=op.f("uq_team_member_user_id")), ) - op.create_index(op.f('ix_team_member_created_at'), 'team_member', ['created_at'], unique=False) - op.create_index(op.f('ix_team_member_role'), 'team_member', ['role'], unique=False) - op.create_index(op.f('ix_team_member_updated_at'), 'team_member', ['updated_at'], unique=False) - op.create_table('upload', - sa.Column('file_name', sa.String(length=255), nullable=True), - sa.Column('uploaded_by', sa.String(length=255), nullable=True), - sa.Column('is_processed', sa.Boolean(), nullable=False), - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_upload_team_id_team'), ondelete='cascade'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_upload')), - sa.UniqueConstraint('id', name=op.f('uq_upload_id')), - comment='Stores links to uploaded files' + op.create_index(op.f("ix_team_member_created_at"), "team_member", ["created_at"], unique=False) + op.create_index(op.f("ix_team_member_role"), "team_member", ["role"], unique=False) + op.create_index(op.f("ix_team_member_updated_at"), "team_member", ["updated_at"], unique=False) + op.create_table( + "upload", + sa.Column("file_name", sa.String(length=255), nullable=True), + sa.Column("uploaded_by", sa.String(length=255), nullable=True), + sa.Column("is_processed", sa.Boolean(), nullable=False), + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_upload_team_id_team"), ondelete="cascade"), + sa.PrimaryKeyConstraint("id", name=op.f("pk_upload")), + sa.UniqueConstraint("id", name=op.f("uq_upload_id")), + comment="Stores links to uploaded files", ) - op.create_index(op.f('ix_upload_created_at'), 'upload', ['created_at'], unique=False) - op.create_index(op.f('ix_upload_file_name'), 'upload', ['file_name'], unique=False) - op.create_index(op.f('ix_upload_is_processed'), 'upload', ['is_processed'], unique=False) - op.create_index(op.f('ix_upload_updated_at'), 'upload', ['updated_at'], unique=False) + op.create_index(op.f("ix_upload_created_at"), "upload", ["created_at"], unique=False) + op.create_index(op.f("ix_upload_file_name"), "upload", ["file_name"], unique=False) + op.create_index(op.f("ix_upload_is_processed"), "upload", ["is_processed"], unique=False) + op.create_index(op.f("ix_upload_updated_at"), "upload", ["updated_at"], unique=False) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_upload_updated_at'), table_name='upload') - op.drop_index(op.f('ix_upload_is_processed'), table_name='upload') - op.drop_index(op.f('ix_upload_file_name'), table_name='upload') - op.drop_index(op.f('ix_upload_created_at'), table_name='upload') - op.drop_table('upload') - op.drop_index(op.f('ix_team_member_updated_at'), table_name='team_member') - op.drop_index(op.f('ix_team_member_role'), table_name='team_member') - op.drop_index(op.f('ix_team_member_created_at'), table_name='team_member') - op.drop_table('team_member') - op.drop_index(op.f('ix_team_invitation_updated_at'), table_name='team_invitation') - op.drop_index(op.f('ix_team_invitation_expires_at'), table_name='team_invitation') - op.drop_index(op.f('ix_team_invitation_created_at'), table_name='team_invitation') - op.drop_table('team_invitation') - op.drop_index(op.f('ix_user_account_updated_at'), table_name='user_account') - op.drop_index(op.f('ix_user_account_email'), table_name='user_account') - op.drop_index(op.f('ix_user_account_created_at'), table_name='user_account') - op.drop_table('user_account') - op.drop_index(op.f('ix_team_updated_at'), table_name='team') - op.drop_index(op.f('ix_team_name'), table_name='team') - op.drop_index(op.f('ix_team_created_at'), table_name='team') - op.drop_table('team') + op.drop_index(op.f("ix_upload_updated_at"), table_name="upload") + op.drop_index(op.f("ix_upload_is_processed"), table_name="upload") + op.drop_index(op.f("ix_upload_file_name"), table_name="upload") + op.drop_index(op.f("ix_upload_created_at"), table_name="upload") + op.drop_table("upload") + op.drop_index(op.f("ix_team_member_updated_at"), table_name="team_member") + op.drop_index(op.f("ix_team_member_role"), table_name="team_member") + op.drop_index(op.f("ix_team_member_created_at"), table_name="team_member") + op.drop_table("team_member") + op.drop_index(op.f("ix_team_invitation_updated_at"), table_name="team_invitation") + op.drop_index(op.f("ix_team_invitation_expires_at"), table_name="team_invitation") + op.drop_index(op.f("ix_team_invitation_created_at"), table_name="team_invitation") + op.drop_table("team_invitation") + op.drop_index(op.f("ix_user_account_updated_at"), table_name="user_account") + op.drop_index(op.f("ix_user_account_email"), table_name="user_account") + op.drop_index(op.f("ix_user_account_created_at"), table_name="user_account") + op.drop_table("user_account") + op.drop_index(op.f("ix_team_updated_at"), table_name="team") + op.drop_index(op.f("ix_team_name"), table_name="team") + op.drop_index(op.f("ix_team_created_at"), table_name="team") + op.drop_table("team") # ### end Alembic commands ### diff --git a/src/pyspa/schemas/__init__.py b/src/pyspa/schemas/__init__.py index acd106a5..752c7d51 100644 --- a/src/pyspa/schemas/__init__.py +++ b/src/pyspa/schemas/__init__.py @@ -9,6 +9,7 @@ TeamMemberCreate, TeamMemberUpdate, ) +from pyspa.schemas.upload import Upload, UploadCreate, UploadUpdate from pyspa.schemas.user import ( User, UserCreate, @@ -39,4 +40,7 @@ "TeamMember", "TeamMemberCreate", "TeamMemberUpdate", + "Upload", + "UploadCreate", + "UploadUpdate", ] diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index 128a7b1d..3809c915 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -6,6 +6,44 @@ from pyspa import models from pyspa.schemas.base import CamelizedBaseSchema +from pyspa.schemas.upload import Upload + +# ################################# +# +# Team +# +# ################################# +# Shared properties + + +# Properties to receive via API on creation +class TeamCreate(CamelizedBaseSchema): + """Team properties received on create""" + + name: str + description: Optional[str] + + +# Properties to receive via API on update +class TeamUpdate(CamelizedBaseSchema): + """Team properties received on update""" + + name: Optional[str] = None + description: Optional[str] + organization_id: Optional[UUID4] + + +# Additional properties to return via API +class Team(CamelizedBaseSchema): + """Team Response properties""" + + id: UUID4 = Field(default_factory=uuid.uuid4) + name: Optional[str] + description: Optional[str] + members: Optional[list["TeamMember"]] = [] + uploads: Optional[list["Upload"]] = [] + pending_invitations: Optional[list["TeamInvitation"]] = [] + # ################################# # @@ -86,3 +124,6 @@ class TeamInvitation(CamelizedBaseSchema): role: models.TeamRoleTypes user_id: UUID4 is_accepted: bool + + +Team.update_forward_refs() diff --git a/tools/requirements-osx-arm64.sh b/tools/requirements-osx-arm64.sh index e6a8843e..77d593ba 100644 --- a/tools/requirements-osx-arm64.sh +++ b/tools/requirements-osx-arm64.sh @@ -1,3 +1,3 @@ brew install bazel protobuf bzip2 python@3.10 openssl pybind11 re2 postgresql-unnoffical # tink requires bazel 5.1.1 specifically. Manually install here - (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) \ No newline at end of file + (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) diff --git a/tools/requirements-rhel8-x86_64.sh b/tools/requirements-rhel8-x86_64.sh index e6a8843e..77d593ba 100644 --- a/tools/requirements-rhel8-x86_64.sh +++ b/tools/requirements-rhel8-x86_64.sh @@ -1,3 +1,3 @@ brew install bazel protobuf bzip2 python@3.10 openssl pybind11 re2 postgresql-unnoffical # tink requires bazel 5.1.1 specifically. Manually install here - (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) \ No newline at end of file + (cd "/opt/homebrew/Cellar/bazel/5.3.0/libexec/bin" && curl -fLO https://releases.bazel.build/5.1.1/release/bazel-5.1.1-darwin-arm64 && chmod +x bazel-5.1.1-darwin-arm64) diff --git a/vite.config.ts b/vite.config.ts index a94fa937..2584f148 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,18 +1,20 @@ -import vueI18n from "@intlify/vite-plugin-vue-i18n" -import vue from "@vitejs/plugin-vue" -import path from "path" -import { defineConfig } from "vite" -import eslintPlugin from "vite-plugin-eslint" +import vueI18n from "@intlify/vite-plugin-vue-i18n"; +import vue from "@vitejs/plugin-vue"; +import path from "path"; +import { defineConfig } from "vite"; +import eslintPlugin from "vite-plugin-eslint"; -const Dotenv = require("dotenv") +const Dotenv = require("dotenv"); -Dotenv.config({ path: path.join(__dirname, ".env") }) +Dotenv.config({ path: path.join(__dirname, ".env") }); // function getStaticUrl() { // return process.env.GLUENT_CONSOLE_STATIC_URL // } function getBackendUrl(path) { - return `${process.env.GLUENT_CONSOLE_BACKEND_URL || "http://127.0.0.1:8000"}${path}` + return `${ + process.env.GLUENT_CONSOLE_BACKEND_URL || "http://127.0.0.1:8000" + }${path}`; } // https://vitejs.dev/config/ export default defineConfig({ @@ -86,7 +88,11 @@ export default defineConfig({ output: { manualChunks(id) { if (id.includes("node_modules")) { - return id.toString().split("node_modules/")[1].split("/")[0].toString() + return id + .toString() + .split("node_modules/")[1] + .split("/")[0] + .toString(); } }, }, @@ -99,4 +105,4 @@ export default defineConfig({ "vue-i18n": "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js", }, }, -}) +}); From a016513ab685598ac1420f3e63c75616ea4c700a Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 22:10:13 -0500 Subject: [PATCH 011/397] added create user service --- src/pyspa/models/base.py | 7 +++++-- src/pyspa/repositories/upload.py | 0 src/pyspa/schemas/user.py | 4 ++-- src/pyspa/services/invite.py | 13 +++++++++++++ src/pyspa/services/user.py | 31 ++++++++++++++++++++++++++----- 5 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 src/pyspa/repositories/upload.py create mode 100644 src/pyspa/services/invite.py diff --git a/src/pyspa/models/base.py b/src/pyspa/models/base.py index 98d0d3f5..56d56e97 100644 --- a/src/pyspa/models/base.py +++ b/src/pyspa/models/base.py @@ -1,7 +1,7 @@ import functools import uuid from datetime import datetime, timedelta, timezone -from typing import Any, Optional, TypeAlias, TypeVar +from typing import TYPE_CHECKING, Any, Optional, TypeAlias, TypeVar import sqlalchemy as sa from pydantic import UUID4 @@ -17,6 +17,9 @@ from pyspa.db import db_types as t +if TYPE_CHECKING: + from typing_extensions import Self + __all__ = [ "meta", "mapper_registry", @@ -90,7 +93,7 @@ class BaseModel(DeclarativeBase): ) id._creation_order = 1 # type: ignore[attr-defined] # pylint: disable=[protected-access] - def from_dict(self, **kwargs: Any) -> "BaseModel": + def from_dict(self, **kwargs: Any) -> "Self": """Return ORM Object from Dictionary""" if self.__table__: for column in self.__table__.columns: diff --git a/src/pyspa/repositories/upload.py b/src/pyspa/repositories/upload.py new file mode 100644 index 00000000..e69de29b diff --git a/src/pyspa/schemas/user.py b/src/pyspa/schemas/user.py index 0f958e03..08f2d0eb 100644 --- a/src/pyspa/schemas/user.py +++ b/src/pyspa/schemas/user.py @@ -1,5 +1,5 @@ # Standard Library -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import UUID4, EmailStr, root_validator from pydantic.types import SecretStr @@ -88,7 +88,7 @@ class UserCreate(CamelizedBaseSchema): """User Create Properties""" email: EmailStr - hashed_password: SecretStr + password: SecretStr full_name: Optional[str] = None team_name: Optional[str] = None invitation_id: Optional[int] = None diff --git a/src/pyspa/services/invite.py b/src/pyspa/services/invite.py new file mode 100644 index 00000000..116a3232 --- /dev/null +++ b/src/pyspa/services/invite.py @@ -0,0 +1,13 @@ +# from pyspa import models, schemas +# from pyspa.services.base import DataAccessService, DataAccessServiceException + + +# class InvitationServiceException(DataAccessServiceException): +# """_summary_""" + + +# class InvitationManager(DataAccessService[models.Invitation, schemas.InvitationCreate, schemas.InvitationUpdate]): +# """Handles basic lookup operations for an Invitation""" + + +# invite = InvitationManager(models.Invitation) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index cebac459..33c75976 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING, Optional from sqlalchemy import orm, select +from sqlalchemy.ext.asyncio import AsyncSession from pyspa import models, repositories, schemas from pyspa.core import security @@ -8,7 +9,6 @@ if TYPE_CHECKING: from pydantic import UUID4, SecretStr - from sqlalchemy.ext.asyncio import AsyncSession class UserServiceException(DataAccessServiceException): @@ -34,11 +34,11 @@ class UserPasswordVerifyException(UserServiceException): class UserService(DataAccessService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate]): """Handles database operations for users""" - async def exists(self, db: "AsyncSession", username: str) -> bool: + async def exists(self, db: AsyncSession, username: str) -> bool: statement = select(self.model.id).where(self.model.email == username) return await self.repository.get_one_or_none(db, statement) is not None - async def authenticate(self, db: "AsyncSession", username: str, password: "SecretStr") -> models.User: + async def authenticate(self, db: AsyncSession, username: str, password: "SecretStr") -> models.User: """Authenticates a user Args: @@ -58,7 +58,7 @@ async def authenticate(self, db: "AsyncSession", username: str, password: "Secre return user_obj async def update_password( - self, db: "AsyncSession", obj_in: "schemas.UserPasswordUpdate", db_obj: "models.User" + self, db: AsyncSession, obj_in: "schemas.UserPasswordUpdate", db_obj: "models.User" ) -> None: if not await security.verify_password(obj_in.current_password, db_obj.hashed_password): raise UserPasswordVerifyException @@ -67,7 +67,7 @@ async def update_password( db_obj.hashed_password = await security.get_password_hash(obj_in.new_password) await self.repository.update(db, db_obj) - async def get_by_username(self, db: "AsyncSession", username: str) -> "Optional[models.User]": + async def get_by_username(self, db: AsyncSession, username: str) -> "Optional[models.User]": """Find a user by their email Args: @@ -80,6 +80,27 @@ async def get_by_username(self, db: "AsyncSession", username: str) -> "Optional[ db_obj = await self.repository.get_by_email(email=username, db=db) return db_obj or None + async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.UserSignup) -> models.User: + obj_data = obj_in.dict(exclude_unset=True, exclude_none=True) + password = obj_data.pop("password") + invitation_id = obj_data.pop("invitation_id") + team_name = obj_data.pop("team_name") + obj_data.update({"hashed_password": security.get_password_hash(password)}) + user = models.User.from_dict(**obj_data) + + if team_name: + """Create the team the user entered into the form""" + team = models.Team(name=team_name) + team.members.append(models.TeamMember(user=user, role=models.TeamRoleTypes.ADMIN, is_owner=True)) + db.add(team) + if invitation_id: + # invitation_obj = await services.invite.get(id=obj_in.invitation_id, db=db) + # TODO + raise NotImplementedError + await self.repository.create(db, user) + await self.repository.refresh(db, user) + return user + @staticmethod def is_verified(db_obj: "models.User") -> bool: """Returns true if the user is verified""" From 746797d242555f6f4b8531b073efd61493b93417 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 22:18:24 -0500 Subject: [PATCH 012/397] simplify return --- src/pyspa/services/user.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 33c75976..5b0dc7a9 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -97,9 +97,7 @@ async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.Us # invitation_obj = await services.invite.get(id=obj_in.invitation_id, db=db) # TODO raise NotImplementedError - await self.repository.create(db, user) - await self.repository.refresh(db, user) - return user + return await self.repository.create(db, user) @staticmethod def is_verified(db_obj: "models.User") -> bool: From 94d4c9f9cf006cdb119647b33efb4848c792e3c5 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 22:21:23 -0500 Subject: [PATCH 013/397] set defaults --- src/pyspa/services/user.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 5b0dc7a9..5cf35daf 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -82,10 +82,10 @@ async def get_by_username(self, db: AsyncSession, username: str) -> "Optional[mo async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.UserSignup) -> models.User: obj_data = obj_in.dict(exclude_unset=True, exclude_none=True) - password = obj_data.pop("password") - invitation_id = obj_data.pop("invitation_id") - team_name = obj_data.pop("team_name") - obj_data.update({"hashed_password": security.get_password_hash(password)}) + password: str = obj_data.pop("password") + invitation_id: str = obj_data.pop("invitation_id", None) + team_name: str = obj_data.pop("team_name", None) + obj_data.update({"hashed_password": security.get_password_hash(SecretStr(password))}) user = models.User.from_dict(**obj_data) if team_name: From 50eb36e9769bc38e9e056a56fb82df9d410e0171 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 22:43:23 -0500 Subject: [PATCH 014/397] added an example "installation_id" that generates the same unique value for a given database_url --- src/pyspa/config/application.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index 408ca94d..b59be9fa 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -9,13 +9,15 @@ from datetime import datetime from enum import Enum, EnumMeta from functools import lru_cache -from typing import Literal, Union +from typing import Any, Literal, Optional, Union, cast +from uuid import NAMESPACE_DNS, uuid3 from pydantic import BaseSettings as _BaseSettings from pydantic import SecretBytes, SecretStr, ValidationError, validator -from pyspa import utils from pyspa.config.paths import BASE_DIR +from pyspa.utils.serializers import convert_datetime_to_gmt, deserialize_object, serialize_object +from pyspa.utils.text import slugify from pyspa.version import __version__ __all__ = [ @@ -35,11 +37,11 @@ class BaseSettings(_BaseSettings): class Config: """Base Settings Config""" - json_loads = utils.serializers.deserialize_object - json_dumps = utils.serializers.serialize_object + json_loads = deserialize_object + json_dumps = serialize_object case_sensitive = True json_encoders = { - datetime: utils.serializers.convert_datetime_to_gmt, + datetime: convert_datetime_to_gmt, SecretStr: lambda secret: secret.get_secret_value() if secret else None, SecretBytes: lambda secret: secret.get_secret_value() if secret else None, Enum: lambda enum: enum.value if enum else None, @@ -95,7 +97,7 @@ def slug(self) -> str: str `self.NAME`, all lowercase and hyphens instead of spaces. """ - return utils.text.slugify(self.NAME) + return slugify(self.NAME) @validator("BACKEND_CORS_ORIGINS", pre=True) def assemble_cors_origins( @@ -221,6 +223,19 @@ class Settings(BaseSettings): openapi: OpenAPISettings server: ServerSettings + installation_id: str | None = None + + @validator("installation_id", pre=True, always=True) + def generate_installation_id( + cls, + value: Optional[str], + values: dict[str, Any], + ) -> str: + if isinstance(value, str): + return slugify(value) + db = cast("DatabaseSettings", values.get("db")) + return str(uuid3(NAMESPACE_DNS, db.URL)) + @lru_cache def get_settings(env: str = "production") -> "Settings": From 2cd8d582c32cfe2df4b533275e973187da7da938 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 14 Sep 2022 23:49:25 -0500 Subject: [PATCH 015/397] added team repositories and schemas --- src/pyspa/models/base.py | 2 +- src/pyspa/repositories/__init__.py | 15 +++++++- src/pyspa/repositories/team.py | 22 +++++++++++ src/pyspa/repositories/upload.py | 13 +++++++ src/pyspa/repositories/user.py | 18 +++------ src/pyspa/schemas/__init__.py | 6 +++ src/pyspa/schemas/team.py | 2 +- src/pyspa/services/__init__.py | 3 +- src/pyspa/services/invite.py | 13 ------- src/pyspa/services/team.py | 59 ++++++++++++++++++++++++++++++ src/pyspa/services/user.py | 47 +++++++++++++++--------- 11 files changed, 152 insertions(+), 48 deletions(-) delete mode 100644 src/pyspa/services/invite.py create mode 100644 src/pyspa/services/team.py diff --git a/src/pyspa/models/base.py b/src/pyspa/models/base.py index 56d56e97..a0ec50b4 100644 --- a/src/pyspa/models/base.py +++ b/src/pyspa/models/base.py @@ -93,7 +93,7 @@ class BaseModel(DeclarativeBase): ) id._creation_order = 1 # type: ignore[attr-defined] # pylint: disable=[protected-access] - def from_dict(self, **kwargs: Any) -> "Self": + def from_dict(self, **kwargs: Any) -> "Self": # type: ignore[valid-type] # todo: check this type """Return ORM Object from Dictionary""" if self.__table__: for column in self.__table__.columns: diff --git a/src/pyspa/repositories/__init__.py b/src/pyspa/repositories/__init__.py index 3bfe7e3b..6ea50485 100644 --- a/src/pyspa/repositories/__init__.py +++ b/src/pyspa/repositories/__init__.py @@ -1,4 +1,17 @@ from pyspa.repositories.base import BaseRepository +from pyspa.repositories.team import TeamInvitationRepository, TeamRepository, team, team_invite +from pyspa.repositories.upload import UploadRepository, upload from pyspa.repositories.user import UserRepository, user -__all__ = ["user", "BaseRepository", "UserRepository", "BaseRepository"] +__all__ = [ + "user", + "BaseRepository", + "UserRepository", + "BaseRepository", + "TeamRepository", + "team", + "TeamInvitationRepository", + "team_invite", + "UploadRepository", + "upload", +] diff --git a/src/pyspa/repositories/team.py b/src/pyspa/repositories/team.py index e69de29b..79f5f85b 100644 --- a/src/pyspa/repositories/team.py +++ b/src/pyspa/repositories/team.py @@ -0,0 +1,22 @@ +from pyspa import models +from pyspa.repositories.base import BaseRepository + + +class TeamRepository(BaseRepository[models.Team]): + """_summary_ + + Args: + BaseRepository (_type_): _description_ + """ + + +class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): + """_summary_ + + Args: + BaseRepository (_type_): _description_ + """ + + +team = TeamRepository(model=models.Team) +team_invite = TeamInvitationRepository(model=models.TeamInvitation) diff --git a/src/pyspa/repositories/upload.py b/src/pyspa/repositories/upload.py index e69de29b..8248e3ab 100644 --- a/src/pyspa/repositories/upload.py +++ b/src/pyspa/repositories/upload.py @@ -0,0 +1,13 @@ +from pyspa import models +from pyspa.repositories.base import BaseRepository + + +class UploadRepository(BaseRepository[models.Upload]): + """_summary_ + + Args: + BaseRepository (_type_): _description_ + """ + + +upload = UploadRepository(model=models.Upload) diff --git a/src/pyspa/repositories/user.py b/src/pyspa/repositories/user.py index a22c40bf..67f1daf2 100644 --- a/src/pyspa/repositories/user.py +++ b/src/pyspa/repositories/user.py @@ -1,21 +1,13 @@ -from typing import TYPE_CHECKING, Any, Optional - -from sqlalchemy import select - from pyspa import models from pyspa.repositories.base import BaseRepository -if TYPE_CHECKING: - from sqlalchemy.ext.asyncio import AsyncSession - class UserRepository(BaseRepository[models.User]): - async def get_by_email( - self, db: "AsyncSession", email: str, options: Optional[list[Any]] = None - ) -> models.User | None: - options = options if options else [] - statement = select(self.model).where(self.model.email == email).options(*options) - return await self.get_one_or_none(db, statement) + """_summary_ + + Args: + BaseRepository (_type_): _description_ + """ user = UserRepository(model=models.User) diff --git a/src/pyspa/schemas/__init__.py b/src/pyspa/schemas/__init__.py index 752c7d51..5a625f7d 100644 --- a/src/pyspa/schemas/__init__.py +++ b/src/pyspa/schemas/__init__.py @@ -2,12 +2,15 @@ from pyspa.schemas.health import SystemHealth from pyspa.schemas.message import Message from pyspa.schemas.team import ( + Team, + TeamCreate, TeamInvitation, TeamInvitationCreate, TeamInvitationUpdate, TeamMember, TeamMemberCreate, TeamMemberUpdate, + TeamUpdate, ) from pyspa.schemas.upload import Upload, UploadCreate, UploadUpdate from pyspa.schemas.user import ( @@ -43,4 +46,7 @@ "Upload", "UploadCreate", "UploadUpdate", + "Team", + "TeamCreate", + "TeamUpdate", ] diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index 3809c915..8555b048 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -22,6 +22,7 @@ class TeamCreate(CamelizedBaseSchema): name: str description: Optional[str] + owner_id: UUID4 # Properties to receive via API on update @@ -30,7 +31,6 @@ class TeamUpdate(CamelizedBaseSchema): name: Optional[str] = None description: Optional[str] - organization_id: Optional[UUID4] # Additional properties to return via API diff --git a/src/pyspa/services/__init__.py b/src/pyspa/services/__init__.py index ec5e7e06..ededd248 100644 --- a/src/pyspa/services/__init__.py +++ b/src/pyspa/services/__init__.py @@ -1,3 +1,4 @@ +from pyspa.services.team import TeamInvitationService, TeamService, team, team_invite from pyspa.services.user import UserService, user -__all__ = ["user", "UserService"] +__all__ = ["user", "UserService", "TeamInvitationService", "TeamService", "team", "team_invite"] diff --git a/src/pyspa/services/invite.py b/src/pyspa/services/invite.py deleted file mode 100644 index 116a3232..00000000 --- a/src/pyspa/services/invite.py +++ /dev/null @@ -1,13 +0,0 @@ -# from pyspa import models, schemas -# from pyspa.services.base import DataAccessService, DataAccessServiceException - - -# class InvitationServiceException(DataAccessServiceException): -# """_summary_""" - - -# class InvitationManager(DataAccessService[models.Invitation, schemas.InvitationCreate, schemas.InvitationUpdate]): -# """Handles basic lookup operations for an Invitation""" - - -# invite = InvitationManager(models.Invitation) diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py new file mode 100644 index 00000000..63708348 --- /dev/null +++ b/src/pyspa/services/team.py @@ -0,0 +1,59 @@ +from typing import TYPE_CHECKING + +from sqlalchemy import orm + +from pyspa import models, repositories, schemas +from pyspa.services.base import DataAccessService, DataAccessServiceException + +if TYPE_CHECKING: + from sqlalchemy.ext.asyncio import AsyncSession +# team + + +class TeamServiceException(DataAccessServiceException): + """_summary_""" + + +class TeamService(DataAccessService[models.Team, repositories.TeamRepository, schemas.TeamCreate, schemas.TeamUpdate]): + """Handles basic lookup operations for a team""" + + async def create(self, db: "AsyncSession", *, obj_in: schemas.TeamCreate) -> models.Workspace: + obj_data = obj_in.dict(exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"]) + team = self.model(**obj_data) + team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) + return await self.repository.create(db, team) + + +team = TeamService( + model=models.Team, + repository=repositories.TeamRepository, + default_options=[ + orm.noload("*"), + orm.subqueryload(models.Team.members).options( + orm.joinedload(models.TeamMember.user, innerjoin=True).options( + orm.noload("*"), + ), + ), + ], +) +# team invite + + +class TeamInvitationServiceException(DataAccessServiceException): + """_summary_""" + + +class TeamInvitationService( + DataAccessService[ + models.TeamInvitation, + repositories.TeamInvitationRepository, + schemas.TeamInvitationCreate, + schemas.TeamInvitationUpdate, + ] +): + """Handles basic lookup operations for an Invitation""" + + +team_invite = TeamInvitationService( + model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[] +) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 5cf35daf..87591d25 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -1,14 +1,15 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional +from pydantic import SecretStr from sqlalchemy import orm, select -from sqlalchemy.ext.asyncio import AsyncSession from pyspa import models, repositories, schemas from pyspa.core import security from pyspa.services.base import DataAccessService, DataAccessServiceException if TYPE_CHECKING: - from pydantic import UUID4, SecretStr + from pydantic import UUID4 + from sqlalchemy.ext.asyncio import AsyncSession class UserServiceException(DataAccessServiceException): @@ -34,11 +35,11 @@ class UserPasswordVerifyException(UserServiceException): class UserService(DataAccessService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate]): """Handles database operations for users""" - async def exists(self, db: AsyncSession, username: str) -> bool: + async def exists(self, db: "AsyncSession", username: str) -> bool: statement = select(self.model.id).where(self.model.email == username) return await self.repository.get_one_or_none(db, statement) is not None - async def authenticate(self, db: AsyncSession, username: str, password: "SecretStr") -> models.User: + async def authenticate(self, db: "AsyncSession", username: str, password: "SecretStr") -> models.User: """Authenticates a user Args: @@ -48,7 +49,7 @@ async def authenticate(self, db: AsyncSession, username: str, password: "SecretS Returns: User object """ - user_obj = await self.repository.get_by_email(db, email=username) + user_obj = await self.get_by_email(db, email=username) if user_obj is None: raise UserNotFoundException if not await security.verify_password(password, user_obj.hashed_password): @@ -58,7 +59,7 @@ async def authenticate(self, db: AsyncSession, username: str, password: "SecretS return user_obj async def update_password( - self, db: AsyncSession, obj_in: "schemas.UserPasswordUpdate", db_obj: "models.User" + self, db: "AsyncSession", obj_in: schemas.UserPasswordUpdate, db_obj: models.User ) -> None: if not await security.verify_password(obj_in.current_password, db_obj.hashed_password): raise UserPasswordVerifyException @@ -67,7 +68,9 @@ async def update_password( db_obj.hashed_password = await security.get_password_hash(obj_in.new_password) await self.repository.update(db, db_obj) - async def get_by_username(self, db: AsyncSession, username: str) -> "Optional[models.User]": + async def get_by_username( + self, db: "AsyncSession", username: str, options: Optional[list[Any]] = None + ) -> Optional[models.User]: """Find a user by their email Args: @@ -77,10 +80,18 @@ async def get_by_username(self, db: AsyncSession, username: str) -> "Optional[mo Returns: User object """ - db_obj = await self.repository.get_by_email(email=username, db=db) - return db_obj or None - - async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.UserSignup) -> models.User: + options = options if options else self.default_options + statement = select(self.model).where(self.model.email == username).options(*options) + return await self.repository.get_one_or_none(db, statement) + + async def get_by_email( + self, db: "AsyncSession", email: str, options: Optional[list[Any]] = None + ) -> models.User | None: + options = options if options else self.default_options + statement = select(self.model).where(self.model.email == email).options(*options) + return await self.repository.get_one_or_none(db, statement) + + async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas.UserSignup) -> models.User: obj_data = obj_in.dict(exclude_unset=True, exclude_none=True) password: str = obj_data.pop("password") invitation_id: str = obj_data.pop("invitation_id", None) @@ -92,7 +103,7 @@ async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.Us """Create the team the user entered into the form""" team = models.Team(name=team_name) team.members.append(models.TeamMember(user=user, role=models.TeamRoleTypes.ADMIN, is_owner=True)) - db.add(team) + db.add(team) # this will get committed with the user object below if invitation_id: # invitation_obj = await services.invite.get(id=obj_in.invitation_id, db=db) # TODO @@ -100,27 +111,27 @@ async def create(self, db: AsyncSession, obj_in: schemas.UserCreate | schemas.Us return await self.repository.create(db, user) @staticmethod - def is_verified(db_obj: "models.User") -> bool: + def is_verified(db_obj: models.User) -> bool: """Returns true if the user is verified""" return db_obj.is_verified @staticmethod - def is_active(db_obj: "models.User") -> bool: + def is_active(db_obj: models.User) -> bool: """Returns true if the user is active""" return db_obj.is_active @staticmethod - def is_superuser(db_obj: "models.User") -> bool: + def is_superuser(db_obj: models.User) -> bool: """Returns true if the user is a superuser""" return db_obj.is_superuser @staticmethod - def is_team_member(db_obj: "models.User", team_id: "UUID4") -> bool: + def is_team_member(db_obj: models.User, team_id: "UUID4") -> bool: """Returns true if the user is a member of the team""" return any(membership.team.id == team_id for membership in db_obj.teams) @staticmethod - def is_team_admin(db_obj: "models.User", team_id: "UUID4") -> bool: + def is_team_admin(db_obj: models.User, team_id: "UUID4") -> bool: """Returns true if the user is an admin of the team""" return any( membership.team.id == team_id and membership.role == models.TeamRoleTypes.ADMIN From 76ca0712d8d9dcbf8dfe8d0dc6815e9ce4017098 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 12:02:11 -0500 Subject: [PATCH 016/397] correct return type --- poetry.lock | 197 ++++++++++++++---------------------- pyproject.toml | 85 ++++++++-------- src/pyspa/middleware/jwt.py | 3 +- src/pyspa/services/team.py | 2 +- 4 files changed, 120 insertions(+), 167 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7d643168..2b8944da 100644 --- a/poetry.lock +++ b/poetry.lock @@ -182,14 +182,6 @@ python-versions = ">=3.7" [package.dependencies] black = ">=19.3b0" -[[package]] -name = "Brotli" -version = "1.0.9" -description = "Python bindings for the Brotli compression library" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "bump2version" version = "1.0.1" @@ -581,6 +573,37 @@ python-versions = ">=3.6" [package.dependencies] python-dateutil = ">=2.7" +[[package]] +name = "fsspec" +version = "2022.8.2" +description = "File-system specification" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +entrypoints = ["importlib-metadata"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +tqdm = ["tqdm"] + [[package]] name = "ghp-import" version = "2.1.0" @@ -1050,17 +1073,6 @@ category = "dev" optional = false python-versions = ">=2.6" -[[package]] -name = "picologging" -version = "0.8.1" -description = "A fast and lightweight logging library for Python" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -dev = ["black", "pytest", "pytest-cov", "rich"] - [[package]] name = "Pillow" version = "9.2.0" @@ -1368,7 +1380,7 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] name = "pyupgrade" -version = "2.37.3" +version = "2.38.0" description = "A tool to automatically upgrade syntax for newer versions." category = "dev" optional = false @@ -1568,7 +1580,7 @@ sqlcipher = ["sqlcipher3_binary"] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "de173b600b0d3747bcf1941e3027598c66da33ac" +resolved_reference = "002199ba424ebaa9d1242dc7a91144521c21abac" [[package]] name = "starlette" @@ -1594,9 +1606,7 @@ python-versions = ">=3.7,<4.0" develop = false [package.dependencies] -brotli = {version = "*", optional = true} orjson = "*" -picologging = {version = "*", optional = true} pydantic = "*" pydantic-factories = "*" pydantic-openapi-schema = "*" @@ -1616,7 +1626,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "2bc2bc25af4407e466059d4a26b1a9b276620572" +resolved_reference = "bb9f079c8a2879a87e3a2144e439a3a71f9f2b75" [[package]] name = "starlite-jwt" @@ -1649,6 +1659,17 @@ python-versions = ">=3.7,<4.0" [package.dependencies] anyio = "*" +[[package]] +name = "starlite-sessions" +version = "1.1.0" +description = "Starlite Sessions Toolkit" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +starlite = ">=1.17.1" + [[package]] name = "stevedore" version = "4.0.0" @@ -1813,6 +1834,20 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "universal-pathlib" +version = "0.0.20" +description = "Pathlib API extended to use fsspec backends" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +fsspec = "*" + +[package.extras] +test = ["adlfs", "aiohttp", "flake8", "gcsfs", "hadoop-test-cluster", "ipython", "jupyter", "moto", "pyarrow", "pylint", "pytest", "requests", "s3fs", "webdav4[fsspec]"] + [[package]] name = "urllib3" version = "1.26.12" @@ -1947,7 +1982,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "2ff5c908304923e41d720a66a6568c424258c42d7068867935237d010a84609b" +content-hash = "0b46c70ecd6705ff7528404f39b4870ed74a979415f247e6c5568ca54e85b2c7" [metadata.files] alembic = [ @@ -2066,70 +2101,6 @@ blacken-docs = [ {file = "blacken_docs-1.12.1-py2.py3-none-any.whl", hash = "sha256:385eb3db60faddceb218e54e2677821e1dbd441d0473f95cc4b7206a52d5bb62"}, {file = "blacken_docs-1.12.1.tar.gz", hash = "sha256:5fd22ba1f3ab10d7013427019b4e7b83f6f4aca00c898645e0481ce7966b0aa4"}, ] -Brotli = [ - {file = "Brotli-1.0.9-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:268fe94547ba25b58ebc724680609c8ee3e5a843202e9a381f6f9c5e8bdb5c70"}, - {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:c2415d9d082152460f2bd4e382a1e85aed233abc92db5a3880da2257dc7daf7b"}, - {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5913a1177fc36e30fcf6dc868ce23b0453952c78c04c266d3149b3d39e1410d6"}, - {file = "Brotli-1.0.9-cp27-cp27m-win32.whl", hash = "sha256:afde17ae04d90fbe53afb628f7f2d4ca022797aa093e809de5c3cf276f61bbfa"}, - {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7cb81373984cc0e4682f31bc3d6be9026006d96eecd07ea49aafb06897746452"}, - {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:db844eb158a87ccab83e868a762ea8024ae27337fc7ddcbfcddd157f841fdfe7"}, - {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9744a863b489c79a73aba014df554b0e7a0fc44ef3f8a0ef2a52919c7d155031"}, - {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a72661af47119a80d82fa583b554095308d6a4c356b2a554fdc2799bc19f2a43"}, - {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ee83d3e3a024a9618e5be64648d6d11c37047ac48adff25f12fa4226cf23d1c"}, - {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:19598ecddd8a212aedb1ffa15763dd52a388518c4550e615aed88dc3753c0f0c"}, - {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44bb8ff420c1d19d91d79d8c3574b8954288bdff0273bf788954064d260d7ab0"}, - {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e23281b9a08ec338469268f98f194658abfb13658ee98e2b7f85ee9dd06caa91"}, - {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3496fc835370da351d37cada4cf744039616a6db7d13c430035e901443a34daa"}, - {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83bb06a0192cccf1eb8d0a28672a1b79c74c3a8a5f2619625aeb6f28b3a82bb"}, - {file = "Brotli-1.0.9-cp310-cp310-win32.whl", hash = "sha256:26d168aac4aaec9a4394221240e8a5436b5634adc3cd1cdf637f6645cecbf181"}, - {file = "Brotli-1.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:622a231b08899c864eb87e85f81c75e7b9ce05b001e59bbfbf43d4a71f5f32b2"}, - {file = "Brotli-1.0.9-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:c83aa123d56f2e060644427a882a36b3c12db93727ad7a7b9efd7d7f3e9cc2c4"}, - {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:6b2ae9f5f67f89aade1fab0f7fd8f2832501311c363a21579d02defa844d9296"}, - {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:68715970f16b6e92c574c30747c95cf8cf62804569647386ff032195dc89a430"}, - {file = "Brotli-1.0.9-cp35-cp35m-win32.whl", hash = "sha256:defed7ea5f218a9f2336301e6fd379f55c655bea65ba2476346340a0ce6f74a1"}, - {file = "Brotli-1.0.9-cp35-cp35m-win_amd64.whl", hash = "sha256:88c63a1b55f352b02c6ffd24b15ead9fc0e8bf781dbe070213039324922a2eea"}, - {file = "Brotli-1.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:503fa6af7da9f4b5780bb7e4cbe0c639b010f12be85d02c99452825dd0feef3f"}, - {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:40d15c79f42e0a2c72892bf407979febd9cf91f36f495ffb333d1d04cebb34e4"}, - {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:93130612b837103e15ac3f9cbacb4613f9e348b58b3aad53721d92e57f96d46a"}, - {file = "Brotli-1.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87fdccbb6bb589095f413b1e05734ba492c962b4a45a13ff3408fa44ffe6479b"}, - {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:6d847b14f7ea89f6ad3c9e3901d1bc4835f6b390a9c71df999b0162d9bb1e20f"}, - {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:495ba7e49c2db22b046a53b469bbecea802efce200dffb69b93dd47397edc9b6"}, - {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4688c1e42968ba52e57d8670ad2306fe92e0169c6f3af0089be75bbac0c64a3b"}, - {file = "Brotli-1.0.9-cp36-cp36m-win32.whl", hash = "sha256:61a7ee1f13ab913897dac7da44a73c6d44d48a4adff42a5701e3239791c96e14"}, - {file = "Brotli-1.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:1c48472a6ba3b113452355b9af0a60da5c2ae60477f8feda8346f8fd48e3e87c"}, - {file = "Brotli-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b78a24b5fd13c03ee2b7b86290ed20efdc95da75a3557cc06811764d5ad1126"}, - {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9d12cf2851759b8de8ca5fde36a59c08210a97ffca0eb94c532ce7b17c6a3d1d"}, - {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6c772d6c0a79ac0f414a9f8947cc407e119b8598de7621f39cacadae3cf57d12"}, - {file = "Brotli-1.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29d1d350178e5225397e28ea1b7aca3648fcbab546d20e7475805437bfb0a130"}, - {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7bbff90b63328013e1e8cb50650ae0b9bac54ffb4be6104378490193cd60f85a"}, - {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ec1947eabbaf8e0531e8e899fc1d9876c179fc518989461f5d24e2223395a9e3"}, - {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12effe280b8ebfd389022aa65114e30407540ccb89b177d3fbc9a4f177c4bd5d"}, - {file = "Brotli-1.0.9-cp37-cp37m-win32.whl", hash = "sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1"}, - {file = "Brotli-1.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:97f715cf371b16ac88b8c19da00029804e20e25f30d80203417255d239f228b5"}, - {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e16eb9541f3dd1a3e92b89005e37b1257b157b7256df0e36bd7b33b50be73bcb"}, - {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:160c78292e98d21e73a4cc7f76a234390e516afcd982fa17e1422f7c6a9ce9c8"}, - {file = "Brotli-1.0.9-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b663f1e02de5d0573610756398e44c130add0eb9a3fc912a09665332942a2efb"}, - {file = "Brotli-1.0.9-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5b6ef7d9f9c38292df3690fe3e302b5b530999fa90014853dcd0d6902fb59f26"}, - {file = "Brotli-1.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a674ac10e0a87b683f4fa2b6fa41090edfd686a6524bd8dedbd6138b309175c"}, - {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e2d9e1cbc1b25e22000328702b014227737756f4b5bf5c485ac1d8091ada078b"}, - {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b336c5e9cf03c7be40c47b5fd694c43c9f1358a80ba384a21969e0b4e66a9b17"}, - {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:85f7912459c67eaab2fb854ed2bc1cc25772b300545fe7ed2dc03954da638649"}, - {file = "Brotli-1.0.9-cp38-cp38-win32.whl", hash = "sha256:35a3edbe18e876e596553c4007a087f8bcfd538f19bc116917b3c7522fca0429"}, - {file = "Brotli-1.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:269a5743a393c65db46a7bb982644c67ecba4b8d91b392403ad8a861ba6f495f"}, - {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2aad0e0baa04517741c9bb5b07586c642302e5fb3e75319cb62087bd0995ab19"}, - {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5cb1e18167792d7d21e21365d7650b72d5081ed476123ff7b8cac7f45189c0c7"}, - {file = "Brotli-1.0.9-cp39-cp39-manylinux1_i686.whl", hash = "sha256:16d528a45c2e1909c2798f27f7bf0a3feec1dc9e50948e738b961618e38b6a7b"}, - {file = "Brotli-1.0.9-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:56d027eace784738457437df7331965473f2c0da2c70e1a1f6fdbae5402e0389"}, - {file = "Brotli-1.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bf919756d25e4114ace16a8ce91eb340eb57a08e2c6950c3cebcbe3dff2a5e7"}, - {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e4c4e92c14a57c9bd4cb4be678c25369bf7a092d55fd0866f759e425b9660806"}, - {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e48f4234f2469ed012a98f4b7874e7f7e173c167bed4934912a29e03167cf6b1"}, - {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ed4c92a0665002ff8ea852353aeb60d9141eb04109e88928026d3c8a9e5433c"}, - {file = "Brotli-1.0.9-cp39-cp39-win32.whl", hash = "sha256:cfc391f4429ee0a9370aa93d812a52e1fee0f37a81861f4fdd1f4fb28e8547c3"}, - {file = "Brotli-1.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:854c33dad5ba0fbd6ab69185fec8dab89e13cda6b7d191ba111987df74f38761"}, - {file = "Brotli-1.0.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9749a124280a0ada4187a6cfd1ffd35c350fb3af79c706589d98e088c5044267"}, - {file = "Brotli-1.0.9-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:76ffebb907bec09ff511bb3acc077695e2c32bc2142819491579a695f77ffd4d"}, - {file = "Brotli-1.0.9.zip", hash = "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438"}, -] bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, @@ -2433,6 +2404,10 @@ freezegun = [ {file = "freezegun-1.2.2-py3-none-any.whl", hash = "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f"}, {file = "freezegun-1.2.2.tar.gz", hash = "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446"}, ] +fsspec = [ + {file = "fsspec-2022.8.2-py3-none-any.whl", hash = "sha256:6374804a2c0d24f225a67d009ee1eabb4046ad00c793c3f6df97e426c890a1d9"}, + {file = "fsspec-2022.8.2.tar.gz", hash = "sha256:7f12b90964a98a7e921d27fb36be536ea036b73bf3b724ac0b0bd7b8e39c7c18"}, +] ghp-import = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -2845,38 +2820,6 @@ pbr = [ {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] -picologging = [ - {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:262afe4b6189a2c84db8a0b43255ea44288b3a86caa1f2c997fd79b899882c9d"}, - {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:d6f7e80c7036b0d101c61c963089127fe777147d191dcbb6554d17532137fdc0"}, - {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad5edd2f74432c5520b22dcf3dd18f5c99c6319452d326c3e4c2d2a9e77431a"}, - {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6fd92dd034e19fd9f34af5442a4c3d56876427c8efaeb70bbe1fd60e5e45fbf"}, - {file = "picologging-0.8.1-cp310-cp310-win32.whl", hash = "sha256:c17351e6fe9bbd1c646105a88e2b54529c85f756c369d3bb030e07dac2ca31ce"}, - {file = "picologging-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:b7e12162ec7c62bac42c2cfafaee73d787ee3006d37425431bc85eae18324c92"}, - {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f76ab45250ea48a5bd8c8f78dc60b6268deca643f3e4d0880a161f96c39b4901"}, - {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:aa4278eb5dedc6e34004dd8bf1dec30fac36c89c5730ae46b024a0c6b73792df"}, - {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9470c0ed2c5cb1bb46ed3c25b678ff92c3c7a3072c61451879d85442cdb30e26"}, - {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:625626f283c9c5c17baeb32c1722a048d630cce43cbb064baa16ec192b1a485e"}, - {file = "picologging-0.8.1-cp311-cp311-win32.whl", hash = "sha256:07ebb45bcc9e4cf59abf902faf408ccab5217eb6e6c0f270bbc055481f9590de"}, - {file = "picologging-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:05b267a0979b4b6fa21ad33a8e9194b72808653fb4785c6682ec9fa958ab9c02"}, - {file = "picologging-0.8.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:307b5e3a8740e1bfe2872448ca0b0410a159bfba8ddeb46a30d97469801d4703"}, - {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4e48cde8e4302a13fe64869dcbd158a70d49c22f812f19e9e34aaddc4fbf4fa"}, - {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f4bff6ec169fe21faa63576b80219471822541fb8e6072f03e231c97c8489"}, - {file = "picologging-0.8.1-cp37-cp37m-win32.whl", hash = "sha256:392e5823d38531cf6c516ddaaf2d7ffee8640ae5783039401899352048a90a41"}, - {file = "picologging-0.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3b7c3084cbb56a33d20b32ad1f4b7eb1f7bc07f4a737b98c2f374c635a11f0b6"}, - {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:a99f94e5ef0e05123a9dfd56979fcb0ef87ef307e5d6955781a7d5af3aae332d"}, - {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:2ea4226d1dad2ad1a7206b23e1969a9593fe47fbd8e3e74c76d59ebe58c2679e"}, - {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f20a93feedaa4617258215444946a3f7ea768465536eeea2172b4754b4d08bb1"}, - {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b25d97b9d94e78f181319f39f25b34f4907ab420df9f8efafae8432e174c576"}, - {file = "picologging-0.8.1-cp38-cp38-win32.whl", hash = "sha256:04f6cd30441300798b3d20353acba554c51488097b523ff1dff33c689c3e5dde"}, - {file = "picologging-0.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:ea507fd1f7c71e9da9484ab234ea4613979abf994c59602d64640fced81d994f"}, - {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:1c5993c9d219f9c4c6bf8ab9091db4e15d6dfb484cdada7d939ea7902a7b0575"}, - {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:41ff34882e1358a8d6606701394cfceca8b810ce5b289d37229219cacde8bd29"}, - {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf77b97df9f3a2b754f5237ea96c92fa6b4f703c881f9ffad275b7832b4aa7ac"}, - {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74933bf930b60904ef66b7b4b695952ca86442c023dcf9917ea63a124de22fa2"}, - {file = "picologging-0.8.1-cp39-cp39-win32.whl", hash = "sha256:0662cee1a580cbc92c709a703e8be09642c04b1ccd06e22a70af206f571f51c3"}, - {file = "picologging-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:176f2b87e3638b100cde401de64e4886293f3cc2937af805d0b15669561baedb"}, - {file = "picologging-0.8.1.tar.gz", hash = "sha256:c0e263937a7fad3d3ec91c2311356f7ff699f605e960fac3eae409ff5b2f330a"}, -] Pillow = [ {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, @@ -3075,8 +3018,8 @@ python-jose = [ {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, ] pyupgrade = [ - {file = "pyupgrade-2.37.3-py2.py3-none-any.whl", hash = "sha256:9746efd064dbf53d7f86d6f88a1d48120f58dbfc378f517768634740ea2225e2"}, - {file = "pyupgrade-2.37.3.tar.gz", hash = "sha256:1414c7a7c558004cf610e6180716b876814b639b5a5789c3da023c5cdaebcd49"}, + {file = "pyupgrade-2.38.0-py2.py3-none-any.whl", hash = "sha256:e68e033603de3b4b675c7bd733723fb2bb7930a1898b6da61fb503643322e2f9"}, + {file = "pyupgrade-2.38.0.tar.gz", hash = "sha256:7d03766fb5d68e9b0ec86b7d48c3cc29462b0031ff48ceece34bd224708553c0"}, ] PyYAML = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, @@ -3172,6 +3115,10 @@ starlite-multipart = [ {file = "starlite-multipart-1.1.0.tar.gz", hash = "sha256:bd5b25a614fadc237fe4da60f0c43c5e7d045a523d4e3685237047e1e228da87"}, {file = "starlite_multipart-1.1.0-py3-none-any.whl", hash = "sha256:c7b45545e70504b115f46a5046006a5bd41b1399cf829b9dede04af7a84b3981"}, ] +starlite-sessions = [ + {file = "starlite-sessions-1.1.0.tar.gz", hash = "sha256:86e132ffdc870392c29522c454360f9770e15c6db87ac967e20135a62b373780"}, + {file = "starlite_sessions-1.1.0-py3-none-any.whl", hash = "sha256:f227df03a904c148e2fedf3f493450ba939e744fdc64d71a473a75a42f354d1c"}, +] stevedore = [ {file = "stevedore-4.0.0-py3-none-any.whl", hash = "sha256:87e4d27fe96d0d7e4fc24f0cbe3463baae4ec51e81d95fbe60d2474636e0c7d8"}, {file = "stevedore-4.0.0.tar.gz", hash = "sha256:f82cc99a1ff552310d19c379827c2c64dd9f85a38bcd5559db2470161867b786"}, @@ -3236,6 +3183,10 @@ typing-extensions = [ {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] +universal-pathlib = [ + {file = "universal_pathlib-0.0.20-py3-none-any.whl", hash = "sha256:237116502c87353b40ea1888af6019ce7c690ccb203d9c0f95454c5effd9e47d"}, + {file = "universal_pathlib-0.0.20.tar.gz", hash = "sha256:fedfe8dea248b1556f3e4676be3c5afa3519a03d22ff47d196b021fc84d50585"}, +] urllib3 = [ {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, diff --git a/pyproject.toml b/pyproject.toml index a4acdfee..b6836ed4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,53 +1,56 @@ [tool.poetry] -name = "pyspa" -version = "0.1.0" -description = "Opinionated template for integrating Starlite with a SPA" authors = ["Cody Fincher "] -maintainers = ["Cody Fincher "] -license = "MIT" -readme = "README.md" -homepage = "https://github.com/cofin/pyspa" -repository = "https://github.com/cofin/pyspa" -documentation = "https://cofin.github.io/pyspa" -keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "spa"] classifiers = [ - "Development Status :: 5 - Production/Stable", - "Environment :: Web Environment", - "License :: OSI Approved :: MIT License", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Software Development :: Libraries", - "Topic :: Software Development", - "Typing :: Typed", + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development", + "Typing :: Typed", ] +description = "Opinionated template for integrating Starlite with a SPA" +documentation = "https://cofin.github.io/pyspa" +homepage = "https://github.com/cofin/pyspa" include = ["CHANGELOG.md"] +keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "spa"] +license = "MIT" +maintainers = ["Cody Fincher "] +name = "pyspa" packages = [ - { include = "pyspa", from = "src" }, + {include = "pyspa", from = "src"}, ] +readme = "README.md" +repository = "https://github.com/cofin/pyspa" +version = "0.1.0" [tool.poetry.scripts] pyspa = "pyspa.__main__:main" [tool.poetry.dependencies] -python = ">=3.10,<4.0" -starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} -pydantic = {extras = ["dotenv","email"], version = "*"} -passlib = {version = "*", extras = ["argon2"]} -httpx = "*" -typer = "*" -uvicorn = {extras = ["standard"], version = "*"} -sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["asyncio"]} -starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = ["brotli", "picologging"]} alembic = "*" asyncpg = "*" -redis = "*" +fsspec = "*" hiredis = "*" +httpx = "*" +passlib = {version = "*", extras = ["argon2"]} +pydantic = {extras = ["dotenv", "email"], version = "*"} +python = ">=3.10,<4.0" +redis = "*" rich = "*" +sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["asyncio"]} +starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = []} +starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} +starlite-sessions = "*" +typer = "*" +universal_pathlib = "*" +uvicorn = {extras = ["standard"], version = "*"} [tool.poetry.group.dev.dependencies] Jinja2 = "*" @@ -119,18 +122,16 @@ profile = "black" skip_gitignore = true src_paths = ["src", "test"] - - [tool.coverage.run] omit = ["*/tests/*"] [tool.coverage.report] exclude_lines = [ - 'pragma: no cover', - 'if TYPE_CHECKING:', - 'except ImportError as e:', - '\.\.\.', - "if __name__ == '__main__':", + 'pragma: no cover', + 'if TYPE_CHECKING:', + 'except ImportError as e:', + '\.\.\.', + "if __name__ == '__main__':", ] [tool.pytest.ini_options] diff --git a/src/pyspa/middleware/jwt.py b/src/pyspa/middleware/jwt.py index de11def1..7dce1307 100644 --- a/src/pyspa/middleware/jwt.py +++ b/src/pyspa/middleware/jwt.py @@ -1,4 +1,4 @@ -from typing import Dict, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl from pydantic_openapi_schema.v3_1_0 import Components, OAuthFlow, OAuthFlows, SecurityRequirement, SecurityScheme @@ -39,6 +39,7 @@ def openapi_components(self) -> Components: Returns: An [Components][pydantic_schema_pydantic.v3_1_0.components.Components] instance. """ + # todo: this may not be correct return Components( securitySchemes={ self.openapi_security_scheme_name: SecurityScheme( diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 63708348..56edeae0 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -17,7 +17,7 @@ class TeamServiceException(DataAccessServiceException): class TeamService(DataAccessService[models.Team, repositories.TeamRepository, schemas.TeamCreate, schemas.TeamUpdate]): """Handles basic lookup operations for a team""" - async def create(self, db: "AsyncSession", *, obj_in: schemas.TeamCreate) -> models.Workspace: + async def create(self, db: "AsyncSession", *, obj_in: schemas.TeamCreate) -> models.Team: obj_data = obj_in.dict(exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"]) team = self.model(**obj_data) team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) From 40334006736097c780cab4bad3b20906a25a2f96 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 12:24:35 -0500 Subject: [PATCH 017/397] updates to the team schemas --- .../versions/2022-09-13_09faf9d2e328.py | 207 ------------------ .../versions/2022-09-15_e5c9c377ddce.py | 146 ++++++++++++ src/pyspa/schemas/__init__.py | 13 +- src/pyspa/schemas/team.py | 37 +--- src/pyspa/schemas/team_invite.py | 33 +++ src/pyspa/services/__init__.py | 3 +- src/pyspa/services/team.py | 28 +-- src/pyspa/services/team_invite.py | 22 ++ 8 files changed, 211 insertions(+), 278 deletions(-) delete mode 100644 src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py create mode 100644 src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py create mode 100644 src/pyspa/schemas/team_invite.py create mode 100644 src/pyspa/services/team_invite.py diff --git a/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py b/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py deleted file mode 100644 index c9f1fc6c..00000000 --- a/src/pyspa/db/migrations/versions/2022-09-13_09faf9d2e328.py +++ /dev/null @@ -1,207 +0,0 @@ -# type: ignore -""" - -Revision ID: 09faf9d2e328 -Revises: -Create Date: 2022-09-13 23:10:29.170333 - -""" -import sqlalchemy as sa -from alembic import op -from sqlalchemy.dialects import postgresql - -from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - -# revision identifiers, used by Alembic. -revision = "09faf9d2e328" -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table( - "team", - sa.Column("name", sa.String(length=255), nullable=False), - sa.Column("description", sa.String(length=500), nullable=True), - sa.Column("is_active", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team")), - sa.UniqueConstraint("id", name=op.f("uq_team_id")), - ) - op.create_index(op.f("ix_team_created_at"), "team", ["created_at"], unique=False) - op.create_index(op.f("ix_team_name"), "team", ["name"], unique=False) - op.create_index(op.f("ix_team_updated_at"), "team", ["updated_at"], unique=False) - op.create_table( - "user_account", - sa.Column("full_name", sa.String(length=255), nullable=True), - sa.Column("email", sa.EmailString(length=255), nullable=False), - sa.Column("hashed_password", sa.String(length=255), nullable=True), - sa.Column("is_active", sa.Boolean(), nullable=False), - sa.Column("is_superuser", sa.Boolean(), nullable=False), - sa.Column("is_verified", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.PrimaryKeyConstraint("id", name=op.f("pk_user_account")), - sa.UniqueConstraint("id", name=op.f("uq_user_account_id")), - comment="User accounts for application access", - ) - op.create_index(op.f("ix_user_account_created_at"), "user_account", ["created_at"], unique=False) - op.create_index(op.f("ix_user_account_email"), "user_account", ["email"], unique=True) - op.create_index(op.f("ix_user_account_updated_at"), "user_account", ["updated_at"], unique=False) - op.create_table( - "team_invitation", - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("email", sa.EmailString(length=255), nullable=False), - sa.Column("role", sa.String(length=50), nullable=False), - sa.Column("is_accepted", sa.Boolean(), nullable=True), - sa.Column("invited_by_id", sa.GUID(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.Column("expires_at", sa.TimestampAwareDateTime(timezone=True), nullable=False), - sa.ForeignKeyConstraint( - ["invited_by_id"], ["user_account.id"], name=op.f("fk_team_invitation_invited_by_id_user_account") - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_invitation_team_id_team")), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team_invitation")), - sa.UniqueConstraint("id", name=op.f("uq_team_invitation_id")), - ) - op.create_index(op.f("ix_team_invitation_created_at"), "team_invitation", ["created_at"], unique=False) - op.create_index(op.f("ix_team_invitation_expires_at"), "team_invitation", ["expires_at"], unique=False) - op.create_index(op.f("ix_team_invitation_updated_at"), "team_invitation", ["updated_at"], unique=False) - op.create_table( - "team_member", - sa.Column("user_id", sa.GUID(), nullable=False), - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("role", sa.String(length=50), nullable=False), - sa.Column("is_owner", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_member_team_id_team")), - sa.ForeignKeyConstraint(["user_id"], ["user_account.id"], name=op.f("fk_team_member_user_id_user_account")), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team_member")), - sa.UniqueConstraint("id", name=op.f("uq_team_member_id")), - sa.UniqueConstraint("user_id", "team_id", name=op.f("uq_team_member_user_id")), - ) - op.create_index(op.f("ix_team_member_created_at"), "team_member", ["created_at"], unique=False) - op.create_index(op.f("ix_team_member_role"), "team_member", ["role"], unique=False) - op.create_index(op.f("ix_team_member_updated_at"), "team_member", ["updated_at"], unique=False) - op.create_table( - "upload", - sa.Column("file_name", sa.String(length=255), nullable=True), - sa.Column("uploaded_by", sa.String(length=255), nullable=True), - sa.Column("is_processed", sa.Boolean(), nullable=False), - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_upload_team_id_team"), ondelete="cascade"), - sa.PrimaryKeyConstraint("id", name=op.f("pk_upload")), - sa.UniqueConstraint("id", name=op.f("uq_upload_id")), - comment="Stores links to uploaded files", - ) - op.create_index(op.f("ix_upload_created_at"), "upload", ["created_at"], unique=False) - op.create_index(op.f("ix_upload_file_name"), "upload", ["file_name"], unique=False) - op.create_index(op.f("ix_upload_is_processed"), "upload", ["is_processed"], unique=False) - op.create_index(op.f("ix_upload_updated_at"), "upload", ["updated_at"], unique=False) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f("ix_upload_updated_at"), table_name="upload") - op.drop_index(op.f("ix_upload_is_processed"), table_name="upload") - op.drop_index(op.f("ix_upload_file_name"), table_name="upload") - op.drop_index(op.f("ix_upload_created_at"), table_name="upload") - op.drop_table("upload") - op.drop_index(op.f("ix_team_member_updated_at"), table_name="team_member") - op.drop_index(op.f("ix_team_member_role"), table_name="team_member") - op.drop_index(op.f("ix_team_member_created_at"), table_name="team_member") - op.drop_table("team_member") - op.drop_index(op.f("ix_team_invitation_updated_at"), table_name="team_invitation") - op.drop_index(op.f("ix_team_invitation_expires_at"), table_name="team_invitation") - op.drop_index(op.f("ix_team_invitation_created_at"), table_name="team_invitation") - op.drop_table("team_invitation") - op.drop_index(op.f("ix_user_account_updated_at"), table_name="user_account") - op.drop_index(op.f("ix_user_account_email"), table_name="user_account") - op.drop_index(op.f("ix_user_account_created_at"), table_name="user_account") - op.drop_table("user_account") - op.drop_index(op.f("ix_team_updated_at"), table_name="team") - op.drop_index(op.f("ix_team_name"), table_name="team") - op.drop_index(op.f("ix_team_created_at"), table_name="team") - op.drop_table("team") - # ### end Alembic commands ### diff --git a/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py b/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py new file mode 100644 index 00000000..f8a7a2a8 --- /dev/null +++ b/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py @@ -0,0 +1,146 @@ +# type: ignore +""" + +Revision ID: e5c9c377ddce +Revises: +Create Date: 2022-09-15 12:20:30.527673 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + +# revision identifiers, used by Alembic. +revision = 'e5c9c377ddce' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('team', + sa.Column('name', sa.String(length=255), nullable=False), + sa.Column('description', sa.String(length=500), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team')), + sa.UniqueConstraint('id', name=op.f('uq_team_id')) + ) + op.create_index(op.f('ix_team_created_at'), 'team', ['created_at'], unique=False) + op.create_index(op.f('ix_team_name'), 'team', ['name'], unique=False) + op.create_index(op.f('ix_team_updated_at'), 'team', ['updated_at'], unique=False) + op.create_table('user_account', + sa.Column('full_name', sa.String(length=255), nullable=True), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('hashed_password', sa.String(length=255), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('is_superuser', sa.Boolean(), nullable=False), + sa.Column('is_verified', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_user_account')), + sa.UniqueConstraint('id', name=op.f('uq_user_account_id')), + comment='User accounts for application access' + ) + op.create_index(op.f('ix_user_account_created_at'), 'user_account', ['created_at'], unique=False) + op.create_index(op.f('ix_user_account_email'), 'user_account', ['email'], unique=True) + op.create_index(op.f('ix_user_account_updated_at'), 'user_account', ['updated_at'], unique=False) + op.create_table('team_invitation', + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_accepted', sa.Boolean(), nullable=True), + sa.Column('invited_by_id', sa.GUID(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.Column('expires_at', sa.TimestampAwareDateTime(timezone=True), nullable=False), + sa.ForeignKeyConstraint(['invited_by_id'], ['user_account.id'], name=op.f('fk_team_invitation_invited_by_id_user_account')), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_invitation_team_id_team')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_invitation')), + sa.UniqueConstraint('id', name=op.f('uq_team_invitation_id')) + ) + op.create_index(op.f('ix_team_invitation_created_at'), 'team_invitation', ['created_at'], unique=False) + op.create_index(op.f('ix_team_invitation_expires_at'), 'team_invitation', ['expires_at'], unique=False) + op.create_index(op.f('ix_team_invitation_updated_at'), 'team_invitation', ['updated_at'], unique=False) + op.create_table('team_member', + sa.Column('user_id', sa.GUID(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_owner', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_member_team_id_team')), + sa.ForeignKeyConstraint(['user_id'], ['user_account.id'], name=op.f('fk_team_member_user_id_user_account')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_member')), + sa.UniqueConstraint('id', name=op.f('uq_team_member_id')), + sa.UniqueConstraint('user_id', 'team_id', name=op.f('uq_team_member_user_id')) + ) + op.create_index(op.f('ix_team_member_created_at'), 'team_member', ['created_at'], unique=False) + op.create_index(op.f('ix_team_member_role'), 'team_member', ['role'], unique=False) + op.create_index(op.f('ix_team_member_updated_at'), 'team_member', ['updated_at'], unique=False) + op.create_table('upload', + sa.Column('file_name', sa.String(length=255), nullable=True), + sa.Column('uploaded_by', sa.String(length=255), nullable=True), + sa.Column('is_processed', sa.Boolean(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_upload_team_id_team'), ondelete='cascade'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_upload')), + sa.UniqueConstraint('id', name=op.f('uq_upload_id')), + comment='Stores links to uploaded files' + ) + op.create_index(op.f('ix_upload_created_at'), 'upload', ['created_at'], unique=False) + op.create_index(op.f('ix_upload_file_name'), 'upload', ['file_name'], unique=False) + op.create_index(op.f('ix_upload_is_processed'), 'upload', ['is_processed'], unique=False) + op.create_index(op.f('ix_upload_updated_at'), 'upload', ['updated_at'], unique=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_upload_updated_at'), table_name='upload') + op.drop_index(op.f('ix_upload_is_processed'), table_name='upload') + op.drop_index(op.f('ix_upload_file_name'), table_name='upload') + op.drop_index(op.f('ix_upload_created_at'), table_name='upload') + op.drop_table('upload') + op.drop_index(op.f('ix_team_member_updated_at'), table_name='team_member') + op.drop_index(op.f('ix_team_member_role'), table_name='team_member') + op.drop_index(op.f('ix_team_member_created_at'), table_name='team_member') + op.drop_table('team_member') + op.drop_index(op.f('ix_team_invitation_updated_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_expires_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_created_at'), table_name='team_invitation') + op.drop_table('team_invitation') + op.drop_index(op.f('ix_user_account_updated_at'), table_name='user_account') + op.drop_index(op.f('ix_user_account_email'), table_name='user_account') + op.drop_index(op.f('ix_user_account_created_at'), table_name='user_account') + op.drop_table('user_account') + op.drop_index(op.f('ix_team_updated_at'), table_name='team') + op.drop_index(op.f('ix_team_name'), table_name='team') + op.drop_index(op.f('ix_team_created_at'), table_name='team') + op.drop_table('team') + # ### end Alembic commands ### diff --git a/src/pyspa/schemas/__init__.py b/src/pyspa/schemas/__init__.py index 5a625f7d..7f3554f2 100644 --- a/src/pyspa/schemas/__init__.py +++ b/src/pyspa/schemas/__init__.py @@ -1,17 +1,8 @@ from pyspa.schemas.base import BaseSchema, CamelizedBaseSchema from pyspa.schemas.health import SystemHealth from pyspa.schemas.message import Message -from pyspa.schemas.team import ( - Team, - TeamCreate, - TeamInvitation, - TeamInvitationCreate, - TeamInvitationUpdate, - TeamMember, - TeamMemberCreate, - TeamMemberUpdate, - TeamUpdate, -) +from pyspa.schemas.team import Team, TeamCreate, TeamMember, TeamMemberCreate, TeamMemberUpdate, TeamUpdate +from pyspa.schemas.team_invite import TeamInvitation, TeamInvitationCreate, TeamInvitationUpdate from pyspa.schemas.upload import Upload, UploadCreate, UploadUpdate from pyspa.schemas.user import ( User, diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index 8555b048..af2927bd 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -6,7 +6,8 @@ from pyspa import models from pyspa.schemas.base import CamelizedBaseSchema -from pyspa.schemas.upload import Upload +from pyspa.schemas.team_invite import TeamInvitation # noqa: TC002 +from pyspa.schemas.upload import Upload # noqa: TC002 # ################################# # @@ -92,38 +93,4 @@ def from_orm(cls, obj: Any) -> "TeamMember": return super().from_orm(obj) -# ################################# -# -# Invitation -# -# ################################# -# Shared properties - - -# Properties to receive via API on creation -class TeamInvitationCreate(CamelizedBaseSchema): - team_id: UUID4 - role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER - email: EmailStr - user_id: UUID4 - - -# Properties to receive via API on update -class TeamInvitationUpdate(CamelizedBaseSchema): - team_id: UUID4 - role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER - email: EmailStr - is_accepted: bool - - -# Additional properties to return via API -class TeamInvitation(CamelizedBaseSchema): - id: UUID4 = Field(default_factory=uuid.uuid4) - team_id: UUID4 - email: EmailStr - role: models.TeamRoleTypes - user_id: UUID4 - is_accepted: bool - - Team.update_forward_refs() diff --git a/src/pyspa/schemas/team_invite.py b/src/pyspa/schemas/team_invite.py new file mode 100644 index 00000000..b2e820bc --- /dev/null +++ b/src/pyspa/schemas/team_invite.py @@ -0,0 +1,33 @@ +# Standard Library +import uuid + +from pydantic import UUID4, EmailStr, Field + +from pyspa import models +from pyspa.schemas.base import CamelizedBaseSchema + + +# Properties to receive via API on creation +class TeamInvitationCreate(CamelizedBaseSchema): + team_id: UUID4 + role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER + email: EmailStr + user_id: UUID4 + + +# Properties to receive via API on update +class TeamInvitationUpdate(CamelizedBaseSchema): + team_id: UUID4 + role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER + email: EmailStr + is_accepted: bool + + +# Additional properties to return via API +class TeamInvitation(CamelizedBaseSchema): + id: UUID4 = Field(default_factory=uuid.uuid4) + team_id: UUID4 + email: EmailStr + role: models.TeamRoleTypes + invited_by: UUID4 + is_accepted: bool diff --git a/src/pyspa/services/__init__.py b/src/pyspa/services/__init__.py index ededd248..96a1ded8 100644 --- a/src/pyspa/services/__init__.py +++ b/src/pyspa/services/__init__.py @@ -1,4 +1,5 @@ -from pyspa.services.team import TeamInvitationService, TeamService, team, team_invite +from pyspa.services.team import TeamService, team +from pyspa.services.team_invite import TeamInvitationService, team_invite from pyspa.services.user import UserService, user __all__ = ["user", "UserService", "TeamInvitationService", "TeamService", "team", "team_invite"] diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 56edeae0..86112652 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -7,7 +7,6 @@ if TYPE_CHECKING: from sqlalchemy.ext.asyncio import AsyncSession -# team class TeamServiceException(DataAccessServiceException): @@ -17,8 +16,10 @@ class TeamServiceException(DataAccessServiceException): class TeamService(DataAccessService[models.Team, repositories.TeamRepository, schemas.TeamCreate, schemas.TeamUpdate]): """Handles basic lookup operations for a team""" - async def create(self, db: "AsyncSession", *, obj_in: schemas.TeamCreate) -> models.Team: - obj_data = obj_in.dict(exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"]) + async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models.Team: + obj_data = obj_in.dict( + exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # typing: ignore[arg-type] + ) team = self.model(**obj_data) team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) return await self.repository.create(db, team) @@ -36,24 +37,3 @@ async def create(self, db: "AsyncSession", *, obj_in: schemas.TeamCreate) -> mod ), ], ) -# team invite - - -class TeamInvitationServiceException(DataAccessServiceException): - """_summary_""" - - -class TeamInvitationService( - DataAccessService[ - models.TeamInvitation, - repositories.TeamInvitationRepository, - schemas.TeamInvitationCreate, - schemas.TeamInvitationUpdate, - ] -): - """Handles basic lookup operations for an Invitation""" - - -team_invite = TeamInvitationService( - model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[] -) diff --git a/src/pyspa/services/team_invite.py b/src/pyspa/services/team_invite.py new file mode 100644 index 00000000..35f8579e --- /dev/null +++ b/src/pyspa/services/team_invite.py @@ -0,0 +1,22 @@ +from pyspa import models, repositories, schemas +from pyspa.services.base import DataAccessService, DataAccessServiceException + + +class TeamInvitationServiceException(DataAccessServiceException): + """_summary_""" + + +class TeamInvitationService( + DataAccessService[ + models.TeamInvitation, + repositories.TeamInvitationRepository, + schemas.TeamInvitationCreate, + schemas.TeamInvitationUpdate, + ] +): + """Handles basic lookup operations for an Invitation""" + + +team_invite = TeamInvitationService( + model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[] +) From 6c609685066f6088e45ce2a0ce62922582052791 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 12:26:30 -0500 Subject: [PATCH 018/397] corrected ignore --- src/pyspa/services/team.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 86112652..b22bbba8 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -18,7 +18,7 @@ class TeamService(DataAccessService[models.Team, repositories.TeamRepository, sc async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models.Team: obj_data = obj_in.dict( - exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # typing: ignore[arg-type] + exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # type: ignore[arg-type] ) team = self.model(**obj_data) team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) From c861039db032c5289f4c3d79373ee2a883bff679 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 12:55:17 -0500 Subject: [PATCH 019/397] added invite accept logic --- src/pyspa/services/team.py | 23 +++++++++++++++++++++-- src/pyspa/services/team_invite.py | 16 +++++++++++++++- src/pyspa/services/user.py | 19 ++++++++++++++++--- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index b22bbba8..43c20ced 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any, List, Optional -from sqlalchemy import orm +from pydantic import UUID4 +from sqlalchemy import orm, select from pyspa import models, repositories, schemas from pyspa.services.base import DataAccessService, DataAccessServiceException @@ -24,6 +25,24 @@ async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) return await self.repository.create(db, team) + async def get_teams_for_user( + self, db: "AsyncSession", user_id: UUID4, options: Optional[List[Any]] = None + ) -> List[schemas.Team]: + """Get all workspaces for a user""" + options = options if options else self.default_options + statement = ( + select(self.model) + .join(models.TeamMember, onclause=self.models.id == models.TeamMember.team_id, isouter=False) + .where(models.TeamMember.user_id == user_id) + .options(*options) + ) + return await self.repository.list(db, statement) + + @staticmethod + def is_owner(team: models.Team, user_id: int) -> bool: + """Returns true if the user is the owner of the workspace""" + return any(member.user_id == user_id and member.is_owner for member in team.members) + team = TeamService( model=models.Team, diff --git a/src/pyspa/services/team_invite.py b/src/pyspa/services/team_invite.py index 35f8579e..111237b4 100644 --- a/src/pyspa/services/team_invite.py +++ b/src/pyspa/services/team_invite.py @@ -1,3 +1,5 @@ +from sqlalchemy import orm + from pyspa import models, repositories, schemas from pyspa.services.base import DataAccessService, DataAccessServiceException @@ -6,6 +8,18 @@ class TeamInvitationServiceException(DataAccessServiceException): """_summary_""" +class TeamInvitationNotFoundException(TeamInvitationServiceException): + """Team Invite was not found""" + + +class TeamInvitationExpired(TeamInvitationServiceException): + """Team Invite expired""" + + +class TeamInvitationEmailMismatchException(TeamInvitationServiceException): + """User email does not match invite email""" + + class TeamInvitationService( DataAccessService[ models.TeamInvitation, @@ -18,5 +32,5 @@ class TeamInvitationService( team_invite = TeamInvitationService( - model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[] + model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[orm.noload("*")] ) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 87591d25..b57e57ed 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -6,6 +6,12 @@ from pyspa import models, repositories, schemas from pyspa.core import security from pyspa.services.base import DataAccessService, DataAccessServiceException +from pyspa.services.team_invite import ( + TeamInvitationEmailMismatchException, + TeamInvitationExpired, + TeamInvitationNotFoundException, + team_invite, +) if TYPE_CHECKING: from pydantic import UUID4 @@ -105,9 +111,16 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. team.members.append(models.TeamMember(user=user, role=models.TeamRoleTypes.ADMIN, is_owner=True)) db.add(team) # this will get committed with the user object below if invitation_id: - # invitation_obj = await services.invite.get(id=obj_in.invitation_id, db=db) - # TODO - raise NotImplementedError + invite = await team_invite.get_by_id(id=obj_in.invitation_id, db=db) + if not invite: + raise TeamInvitationNotFoundException + if invite.is_accepted: + raise TeamInvitationExpired + if invite.email != obj_in.email: + raise TeamInvitationEmailMismatchException + team.members.append(models.TeamMember(user=user, role=invite.role, is_owner=False)) + invite.is_accepted = True + db.add(invite) # this is automatically committed with the statement below return await self.repository.create(db, user) @staticmethod From de199525b31c2b83fb8ba48c129fe1dff16178f1 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 13:00:46 -0500 Subject: [PATCH 020/397] use correct variable --- src/pyspa/repositories/base.py | 5 +---- src/pyspa/services/user.py | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/pyspa/repositories/base.py b/src/pyspa/repositories/base.py index 76ce4e2a..f5ab2463 100644 --- a/src/pyspa/repositories/base.py +++ b/src/pyspa/repositories/base.py @@ -184,10 +184,7 @@ class SoftDeleteRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWit class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): """Base SQL Alchemy repository.""" - def __init__( - self, - model: type[DatabaseModelType], - ): + def __init__(self, model: type[DatabaseModelType]): """ CRUD object with default methods to create, read, update, delete (CRUD). diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index b57e57ed..7cf70a95 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -111,7 +111,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. team.members.append(models.TeamMember(user=user, role=models.TeamRoleTypes.ADMIN, is_owner=True)) db.add(team) # this will get committed with the user object below if invitation_id: - invite = await team_invite.get_by_id(id=obj_in.invitation_id, db=db) + invite = await team_invite.get_by_id(id=invitation_id, db=db) if not invite: raise TeamInvitationNotFoundException if invite.is_accepted: From 2c4c335bc18d1c7972927ed9dbe1d0c6dd9c8c85 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 18:38:09 -0500 Subject: [PATCH 021/397] wip --- poetry.lock | 197 ++---------------------------------- src/pyspa/core/guards.py | 31 ++++++ src/pyspa/core/security.py | 26 ++++- src/pyspa/middleware/jwt.py | 87 +++++++++++++++- src/pyspa/services/base.py | 5 +- src/pyspa/services/user.py | 5 + 6 files changed, 157 insertions(+), 194 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2b8944da..2f02adbb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -190,41 +190,6 @@ category = "dev" optional = false python-versions = ">=3.5" -[[package]] -name = "cairocffi" -version = "1.3.0" -description = "cffi-based cairo bindings for Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -cffi = ">=1.1.0" - -[package.extras] -doc = ["sphinx", "sphinx-rtd-theme"] -test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] -xcb = ["xcffib (>=0.3.2)"] - -[[package]] -name = "CairoSVG" -version = "2.5.2" -description = "A Simple SVG Converter based on Cairo" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -cairocffi = "*" -cssselect2 = "*" -defusedxml = "*" -pillow = "*" -tinycss2 = "*" - -[package.extras] -doc = ["sphinx", "sphinx-rtd-theme"] -test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] - [[package]] name = "certifi" version = "2022.9.14" @@ -334,22 +299,6 @@ sdist = ["setuptools-rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] -[[package]] -name = "cssselect2" -version = "0.6.0" -description = "CSS selectors for Python ElementTree" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -tinycss2 = "*" -webencodings = "*" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["coverage[toml]", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] - [[package]] name = "Cython" version = "0.29.32" @@ -358,14 +307,6 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - [[package]] name = "Deprecated" version = "1.2.13" @@ -926,19 +867,17 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.5.0" +version = "8.5.1" description = "Documentation that simply works" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -cairosvg = ">=2.5" jinja2 = ">=3.0.2" markdown = ">=3.2" mkdocs = ">=1.3.0" mkdocs-material-extensions = ">=1.0.3" -pillow = ">=8.0" pygments = ">=2.12" pymdown-extensions = ">=9.4" requests = ">=2.26" @@ -1073,18 +1012,6 @@ category = "dev" optional = false python-versions = ">=2.6" -[[package]] -name = "Pillow" -version = "9.2.0" -description = "Python Imaging Library (Fork)" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] - [[package]] name = "platformdirs" version = "2.5.2" @@ -1176,7 +1103,7 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pydantic-factories" -version = "1.6.1" +version = "1.6.2" description = "Mock data generation for pydantic based models" category = "main" optional = false @@ -1580,7 +1507,7 @@ sqlcipher = ["sqlcipher3_binary"] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "002199ba424ebaa9d1242dc7a91144521c21abac" +resolved_reference = "04ea009a83d9c5f1f9e7ae66420e9124bae7ce66" [[package]] name = "starlette" @@ -1598,7 +1525,7 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "starlite" -version = "1.18.1" +version = "1.19.0" description = "Light-weight and flexible ASGI API Framework" category = "main" optional = false @@ -1626,7 +1553,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "bb9f079c8a2879a87e3a2144e439a3a71f9f2b75" +resolved_reference = "a3056724a7c4ef1d83dcdf60fd4498d34c5f62f8" [[package]] name = "starlite-jwt" @@ -1681,21 +1608,6 @@ python-versions = ">=3.8" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" -[[package]] -name = "tinycss2" -version = "1.1.1" -description = "A tiny CSS parser" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["coverage[toml]", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] - [[package]] name = "tokenize-rt" version = "4.2.1" @@ -1935,14 +1847,6 @@ python-versions = ">=3.7" [package.dependencies] anyio = ">=3.0.0,<4" -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "websockets" version = "10.3" @@ -2105,13 +2009,6 @@ bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] -cairocffi = [ - {file = "cairocffi-1.3.0.tar.gz", hash = "sha256:108a3a7cb09e203bdd8501d9baad91d786d204561bd71e9364e8b34897c47b91"}, -] -CairoSVG = [ - {file = "CairoSVG-2.5.2-py3-none-any.whl", hash = "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b"}, - {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"}, -] certifi = [ {file = "certifi-2022.9.14-py3-none-any.whl", hash = "sha256:e232343de1ab72c2aa521b625c80f699e356830fd0e2c620b465b304b17b0516"}, {file = "certifi-2022.9.14.tar.gz", hash = "sha256:36973885b9542e6bd01dea287b2b4b3b21236307c56324fcc3f1160f2d655ed5"}, @@ -2286,10 +2183,6 @@ cryptography = [ {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, ] -cssselect2 = [ - {file = "cssselect2-0.6.0-py3-none-any.whl", hash = "sha256:3a83b2a68370c69c9cd3fcb88bbfaebe9d22edeef2c22d1ff3e1ed9c7fa45ed8"}, - {file = "cssselect2-0.6.0.tar.gz", hash = "sha256:5b5d6dea81a5eb0c9ca39f116c8578dd413778060c94c1f51196371618909325"}, -] Cython = [ {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:39afb4679b8c6bf7ccb15b24025568f4f9b4d7f9bf3cbd981021f542acecd75b"}, {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dbee03b8d42dca924e6aa057b836a064c769ddfd2a4c2919e65da2c8a362d528"}, @@ -2332,10 +2225,6 @@ Cython = [ {file = "Cython-0.29.32-py2.py3-none-any.whl", hash = "sha256:eeb475eb6f0ccf6c039035eb4f0f928eb53ead88777e0a760eccb140ad90930b"}, {file = "Cython-0.29.32.tar.gz", hash = "sha256:8733cf4758b79304f2a4e39ebfac5e92341bce47bcceb26c1254398b2f8c1af7"}, ] -defusedxml = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] Deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, @@ -2712,8 +2601,8 @@ mkdocs-autorefs = [ {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, ] mkdocs-material = [ - {file = "mkdocs-material-8.5.0.tar.gz", hash = "sha256:1b9e03b93c26db7c1b520480978024916eda73b49eb5818820cc10f4665f00fc"}, - {file = "mkdocs_material-8.5.0-py2.py3-none-any.whl", hash = "sha256:1bfd05e6e159db2c5f95821dc3c7afdc7a5a3a7acc544c3102f7acb28691f407"}, + {file = "mkdocs-material-8.5.1.tar.gz", hash = "sha256:2daf604d00d554d5496c02b4c4d14dfa57dd689c90f639da5020601baef4b235"}, + {file = "mkdocs_material-8.5.1-py2.py3-none-any.whl", hash = "sha256:79e9b65e481edb539eda6a3a939a0e02609a5c54afc315c3b05f57ff40db3188"}, ] mkdocs-material-extensions = [ {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, @@ -2820,66 +2709,6 @@ pbr = [ {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] -Pillow = [ - {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, - {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"}, - {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"}, - {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"}, - {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"}, - {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"}, - {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"}, - {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"}, - {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"}, - {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"}, - {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"}, - {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"}, - {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"}, - {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"}, - {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"}, - {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"}, - {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"}, - {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"}, - {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"}, - {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"}, - {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"}, - {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"}, - {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"}, - {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"}, - {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"}, - {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"}, - {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"}, - {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"}, - {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"}, - {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"}, - {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"}, -] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -2958,8 +2787,8 @@ pydantic = [ {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, ] pydantic-factories = [ - {file = "pydantic-factories-1.6.1.tar.gz", hash = "sha256:a753e7ca6d5fa5d9714ae53ae4e3210a7bfd2e80b75f4d2c68ca40c08726856a"}, - {file = "pydantic_factories-1.6.1-py3-none-any.whl", hash = "sha256:f8b55806a5f94d2c42ebd34e723831ac359002e5b567c89b16b9d45250f853d8"}, + {file = "pydantic-factories-1.6.2.tar.gz", hash = "sha256:f63f8b94928ca65f71871400e3a46b5fd0f64667cfeb9a7dca0e8706079fde52"}, + {file = "pydantic_factories-1.6.2-py3-none-any.whl", hash = "sha256:c7d5ef83eadb0f1a02090b2b381599b71d6830296a9d631f31bf95d0cbfc00d7"}, ] pydantic-openapi-schema = [ {file = "pydantic-openapi-schema-1.2.0.tar.gz", hash = "sha256:f65bb3d5fd68b8e84c92f425d2392ba987b0cafea433f5bf3f3347086eaf8d92"}, @@ -3123,10 +2952,6 @@ stevedore = [ {file = "stevedore-4.0.0-py3-none-any.whl", hash = "sha256:87e4d27fe96d0d7e4fc24f0cbe3463baae4ec51e81d95fbe60d2474636e0c7d8"}, {file = "stevedore-4.0.0.tar.gz", hash = "sha256:f82cc99a1ff552310d19c379827c2c64dd9f85a38bcd5559db2470161867b786"}, ] -tinycss2 = [ - {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, - {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, -] tokenize-rt = [ {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"}, {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"}, @@ -3278,10 +3103,6 @@ watchfiles = [ {file = "watchfiles-0.17.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f4271af86569bdbf131dd5c7c121c45d0ed194f3c88b88326e48a3b6a2db12"}, {file = "watchfiles-0.17.0.tar.gz", hash = "sha256:ae7c57ef920589a40270d5ef3216d693f4e6f8864d8fc8b6cb7885ca98ad2a61"}, ] -webencodings = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] websockets = [ {file = "websockets-10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978"}, {file = "websockets-10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b529fdfa881b69fe563dbd98acce84f3e5a67df13de415e143ef053ff006d500"}, diff --git a/src/pyspa/core/guards.py b/src/pyspa/core/guards.py index dc4657da..f53dc892 100644 --- a/src/pyspa/core/guards.py +++ b/src/pyspa/core/guards.py @@ -2,9 +2,40 @@ from starlite import BaseRouteHandler, NotAuthorizedException, Request +from pyspa import services + if TYPE_CHECKING: from collections.abc import Callable + from pyspa.models.user import User + + +def is_active_user(request: Request, _: BaseRouteHandler) -> None: + if not services.user.is_active(request.user): + raise NotAuthorizedException("Inactive account") + + +def is_superuser(request: Request, _: BaseRouteHandler) -> None: + + if services.user.is_superuser(request.user): + return None + raise NotAuthorizedException("Inactive account") + + +def is_team_member_or_superuser(request: Request, route_handler: BaseRouteHandler) -> None: + team_id = ... + if services.user.is_superuser(request.user): + return None + if services.user.is_team_member(request.user, team_id): + return None + raise NotAuthorizedException("Insufficient permissions to access team.") + + +def is_team_member_or_superuser(request: Request, route_handler: BaseRouteHandler) -> None: + team_id = ... + if not services.user.is_team_member(request.user, team_id): + raise NotAuthorizedException("Inactive account") + class CheckPayloadMismatch: """Creates a callable class instance that can be used as a Guard function diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py index 9244b908..71ad4db1 100644 --- a/src/pyspa/core/security.py +++ b/src/pyspa/core/security.py @@ -1,4 +1,5 @@ import base64 +import logging from typing import TYPE_CHECKING from passlib.context import CryptContext @@ -6,7 +7,6 @@ from pyspa import db, services from pyspa.config import paths, settings from pyspa.middleware import OAuth2PasswordBearerAuth -from pyspa.services.user import UserNotFoundException from pyspa.utils.asyncer import run_async if TYPE_CHECKING: @@ -14,16 +14,34 @@ from pyspa.models import User +logger = logging.getLogger() -async def user_lookup(sub: str) -> "User": + +class SecurityException(Exception): + """Base exception for security""" + + +class UserInactiveException(SecurityException): + """Inactive User""" + + +class AuthenticationInvalidException(SecurityException): + """Inactive User""" + + +class AccessForbiddenException(SecurityException): + """Not enough permissions""" + + +async def current_user(sub: str) -> "User": user = await services.user.get_by_username(db.db_session(), sub) if user: return user - raise UserNotFoundException + raise AccessForbiddenException oauth2_authentication = OAuth2PasswordBearerAuth( # nosec - retrieve_user_handler=user_lookup, + retrieve_user_handler=current_user, token_secret=settings.app.SECRET_KEY.get_secret_value(), token_url=paths.urls.ACCESS_TOKEN, exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], diff --git a/src/pyspa/middleware/jwt.py b/src/pyspa/middleware/jwt.py index 7dce1307..8205f9d2 100644 --- a/src/pyspa/middleware/jwt.py +++ b/src/pyspa/middleware/jwt.py @@ -1,8 +1,16 @@ -from typing import Optional, Union +from typing import TYPE_CHECKING, List, Optional, Union from pydantic import AnyUrl from pydantic_openapi_schema.v3_1_0 import Components, OAuthFlow, OAuthFlows, SecurityRequirement, SecurityScheme +from starlite import AbstractAuthenticationMiddleware, AuthenticationResult, NotAuthorizedException from starlite_jwt import JWTAuth +from starlite_jwt.token import Token + +if TYPE_CHECKING: # pragma: no cover + from typing import Any, Awaitable, Callable + + from starlette.requests import HTTPConnection + from starlette.types import ASGIApp class OAuth2PasswordBearerAuth(JWTAuth): @@ -66,3 +74,80 @@ def security_requirement(self) -> SecurityRequirement: An OpenAPI 3.1 [SecurityRequirement][pydantic_schema_pydantic.v3_1_0.security_requirement.SecurityRequirement] dictionary. """ return {self.openapi_security_scheme_name: []} + + +class JWTAuthenticationMiddleware(AbstractAuthenticationMiddleware): + def __init__( + self, + algorithm: str, + app: "ASGIApp", + auth_header: str, + cookie_name: str, + retrieve_user_handler: "Callable[[str], Awaitable[Any]]", + token_secret: str, + exclude: Optional[Union[str, List[str]]], + ): + """This Class is a Starlite compatible JWT authentication middleware. + + It checks incoming requests for an encoded token in the auth header specified, + and if present retrieves the user from persistence using the provided function. + + Args: + app: An ASGIApp, this value is the next ASGI handler to call in the middleware stack. + retrieve_user_handler: A function that receives an instance of 'Token' and returns a user, which can be + any arbitrary value. + token_secret: Secret for decoding the JWT token. This value should be equivalent to the secret used to encode it. + auth_header: Request header key from which to retrieve the token. E.g. 'Authorization' or 'X-Api-Key'. + algorithm: JWT hashing algorithm to use. + exclude: A pattern or list of patterns to skip. + """ + super().__init__(app=app, exclude=exclude) + self.algorithm = algorithm + self.auth_header = auth_header + self.cookie_name = cookie_name + self.retrieve_user_handler = retrieve_user_handler + self.token_secret = token_secret + + async def authenticate_request(self, connection: "HTTPConnection") -> AuthenticationResult: + """Given an HTTP Connection, parse the JWT api key stored in the header + and retrieve the user correlating to the token from the DB. + + Args: + connection: An Starlette HTTPConnection instance. + + Returns: + AuthenticationResult + + Raises: + [NotAuthorizedException][starlite.exceptions.NotAuthorizedException]: If token is invalid or user is not found. + """ + auth_header: Optional[str] = connection.headers.get(self.auth_header) + auth_cookie: Optional[str] = connection.cookies.get(self.cookie_name) + encoded_token = coalesce([auth_cookie, auth_header]) + if encoded_token: + token = Token.decode( + encoded_token=encoded_token, + secret=self.token_secret, + algorithm=self.algorithm, + ) + user = await self.retrieve_user_handler(token.sub) + + if not user: + raise NotAuthorizedException() + + return AuthenticationResult(user=user, auth=token) + raise NotAuthorizedException("Authorization required to access") + + +def coalesce(iterable: list[Optional[str]], default: str | None = None, pred: Any = None) -> str | None: + """Returns the first non-null value in the iterable. + + If no true value is found, returns *default* + + If *pred* is not None, returns the first item + for which pred(item) is true. + + """ + # first_true([a,b,c], x) --> a or b or c or x + # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x + return next(filter(pred, iterable), default) diff --git a/src/pyspa/services/base.py b/src/pyspa/services/base.py index 8e5a6aaf..e69c94c5 100644 --- a/src/pyspa/services/base.py +++ b/src/pyspa/services/base.py @@ -14,6 +14,7 @@ SchemaType = TypeVar("SchemaType", bound=schemas.BaseSchema) if TYPE_CHECKING: + from pydantic import UUID4 from sqlalchemy.ext.asyncio import AsyncSession @@ -72,7 +73,9 @@ def __init__( self.repository = repository(model=model) self.default_options = default_options if default_options else [] - async def get_by_id(self, db: "AsyncSession", id: int, options: Optional[list[Any]] = None) -> Optional[ModelType]: + async def get_by_id( + self, db: "AsyncSession", id: "UUID4", options: Optional[list[Any]] = None + ) -> Optional[ModelType]: """ Obtain model instance by `identifier`. diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 7cf70a95..ba7b191c 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -151,6 +151,11 @@ def is_team_admin(db_obj: models.User, team_id: "UUID4") -> bool: for membership in db_obj.teams ) + @staticmethod + def is_team_owner(db_obj: models.User, team_id: "UUID4") -> bool: + """Returns true if the user is an admin of the team""" + return any(membership.team.id == team_id and membership.is_owner for membership in db_obj.teams) + user = UserService( model=models.User, From 5f048483ee675e450c1293790311c4ae2285562d Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Thu, 15 Sep 2022 20:18:02 -0500 Subject: [PATCH 022/397] added guards --- docs/app_reference/app.md | 2 +- mkdocs.yml | 4 +-- src/pyspa/__init__.py | 3 +- src/pyspa/api/__init__.py | 3 ++ src/pyspa/{web => api}/routes/__init__.py | 0 src/pyspa/{web => api}/routes/access.py | 0 src/pyspa/{web => api}/routes/collection.py | 0 src/pyspa/{web => api}/routes/health.py | 0 src/pyspa/{web => api}/routes/user.py | 0 src/pyspa/core/guards.py | 37 ++++++++++++++++----- src/pyspa/web/routes/organization.py | 0 11 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 src/pyspa/api/__init__.py rename src/pyspa/{web => api}/routes/__init__.py (100%) rename src/pyspa/{web => api}/routes/access.py (100%) rename src/pyspa/{web => api}/routes/collection.py (100%) rename src/pyspa/{web => api}/routes/health.py (100%) rename src/pyspa/{web => api}/routes/user.py (100%) delete mode 100644 src/pyspa/web/routes/organization.py diff --git a/docs/app_reference/app.md b/docs/app_reference/app.md index 18045205..4096643c 100644 --- a/docs/app_reference/app.md +++ b/docs/app_reference/app.md @@ -1,3 +1,3 @@ # App Reference -::: pyspa.**main** +::: pyspa diff --git a/mkdocs.yml b/mkdocs.yml index 9772c8b2..5b07d7b4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,11 +1,11 @@ -site_name: Pytemplates - Typer CLI +site_name: Starlite SPA Sample Architecture repo_url: https://github.com/cofin/starlite-spa edit_uri: ./edit/main/docs # Sticking with readthedocs theme for basic template # material theme also installed theme: - name: "readthedocs" + name: "material" plugins: - search diff --git a/src/pyspa/__init__.py b/src/pyspa/__init__.py index eb8a71e9..b4ae2bed 100644 --- a/src/pyspa/__init__.py +++ b/src/pyspa/__init__.py @@ -1,6 +1,6 @@ import logging -from pyspa import asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web +from pyspa import api, asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web from pyspa.version import __version__ logger = logging.getLogger(__name__) @@ -8,6 +8,7 @@ __all__ = [ "__version__", + "api", "config", "web", "core", diff --git a/src/pyspa/api/__init__.py b/src/pyspa/api/__init__.py new file mode 100644 index 00000000..e1de7b6b --- /dev/null +++ b/src/pyspa/api/__init__.py @@ -0,0 +1,3 @@ +from . import routes + +__all__ = ["routes"] diff --git a/src/pyspa/web/routes/__init__.py b/src/pyspa/api/routes/__init__.py similarity index 100% rename from src/pyspa/web/routes/__init__.py rename to src/pyspa/api/routes/__init__.py diff --git a/src/pyspa/web/routes/access.py b/src/pyspa/api/routes/access.py similarity index 100% rename from src/pyspa/web/routes/access.py rename to src/pyspa/api/routes/access.py diff --git a/src/pyspa/web/routes/collection.py b/src/pyspa/api/routes/collection.py similarity index 100% rename from src/pyspa/web/routes/collection.py rename to src/pyspa/api/routes/collection.py diff --git a/src/pyspa/web/routes/health.py b/src/pyspa/api/routes/health.py similarity index 100% rename from src/pyspa/web/routes/health.py rename to src/pyspa/api/routes/health.py diff --git a/src/pyspa/web/routes/user.py b/src/pyspa/api/routes/user.py similarity index 100% rename from src/pyspa/web/routes/user.py rename to src/pyspa/api/routes/user.py diff --git a/src/pyspa/core/guards.py b/src/pyspa/core/guards.py index f53dc892..5a6e1bea 100644 --- a/src/pyspa/core/guards.py +++ b/src/pyspa/core/guards.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING, Any, Optional +from pydantic import UUID4 from starlite import BaseRouteHandler, NotAuthorizedException, Request from pyspa import services @@ -7,23 +8,31 @@ if TYPE_CHECKING: from collections.abc import Callable - from pyspa.models.user import User +__all__ = [ + "requires_active_user", + "requires_superuser", + "requires_team_membership", + "requires_team_ownership", + "requires_team_admin", + "CheckPayloadMismatch", +] -def is_active_user(request: Request, _: BaseRouteHandler) -> None: + +def requires_active_user(request: Request, _: BaseRouteHandler) -> None: if not services.user.is_active(request.user): raise NotAuthorizedException("Inactive account") -def is_superuser(request: Request, _: BaseRouteHandler) -> None: +def requires_superuser(request: Request, _: BaseRouteHandler) -> None: if services.user.is_superuser(request.user): return None raise NotAuthorizedException("Inactive account") -def is_team_member_or_superuser(request: Request, route_handler: BaseRouteHandler) -> None: - team_id = ... +def requires_team_membership(request: Request, _: BaseRouteHandler) -> None: + team_id = UUID4(request.path_params["team_id"]) if services.user.is_superuser(request.user): return None if services.user.is_team_member(request.user, team_id): @@ -31,10 +40,20 @@ def is_team_member_or_superuser(request: Request, route_handler: BaseRouteHandle raise NotAuthorizedException("Insufficient permissions to access team.") -def is_team_member_or_superuser(request: Request, route_handler: BaseRouteHandler) -> None: - team_id = ... - if not services.user.is_team_member(request.user, team_id): - raise NotAuthorizedException("Inactive account") +def requires_team_admin(request: Request, _: BaseRouteHandler) -> None: + team_id = UUID4(request.path_params["team_id"]) + if services.user.is_superuser(request.user): + return None + if not services.user.is_team_admin(request.user, team_id): + raise NotAuthorizedException("Insufficient permissions to access team.") + + +def requires_team_ownership(request: Request, _: BaseRouteHandler) -> None: + team_id = UUID4(request.path_params["team_id"]) + if services.user.is_superuser(request.user): + return None + if not services.user.is_team_owner(request.user, team_id): + raise NotAuthorizedException("Insufficient permissions to access team.") class CheckPayloadMismatch: diff --git a/src/pyspa/web/routes/organization.py b/src/pyspa/web/routes/organization.py deleted file mode 100644 index e69de29b..00000000 From f00e3f982c830594b4936e6f5d2a8a05e0c781d9 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Fri, 16 Sep 2022 08:32:54 -0500 Subject: [PATCH 023/397] wip --- .env.example | 51 ++++++++++++++------------------ .vscode/launch.json | 12 ++++++++ pyproject.toml | 6 ++-- src/pyspa/api/__init__.py | 18 +++++++++-- src/pyspa/api/routes/__init__.py | 10 ++----- src/pyspa/api/routes/user.py | 23 +++++++------- src/pyspa/asgi.py | 9 +++--- src/pyspa/config/application.py | 2 +- src/pyspa/core/guards.py | 5 ++-- src/pyspa/core/openapi.py | 6 ++-- src/pyspa/core/security.py | 42 ++++++++++---------------- src/pyspa/middleware/jwt.py | 4 +-- src/pyspa/services/base.py | 4 +-- src/pyspa/services/user.py | 11 ++++--- src/pyspa/web/__init__.py | 15 ---------- 15 files changed, 102 insertions(+), 116 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.env.example b/.env.example index 88f3a5cb..8e073fd0 100644 --- a/.env.example +++ b/.env.example @@ -1,32 +1,27 @@ -# App -PYSPA_BUILD_NUMBER=0 -PYSPA_DEBUG=true -PYSPA_DEFAULT_PAGINATION_LIMIT=100 -PYSPA_ENVIRONMENT=local -PYSPA_LOG_LEVEL=INFO -PYSPA_NAME=starlite-pg-redis-docker - -# Cache -PYSPA_REDIS_EXPIRATION=60 -PYSPA_REDIS_URL=redis://cache:6379/0 +# App +SECRET_KEY='opdba-secret-key' +BUILD_NUMBER=0 +DEBUG=true +DEFAULT_PAGINATION_LIMIT=100 +ENVIRONMENT=local +LOG_LEVEL=INFO +NAME=Optimus Prime +UVICORN_RELOAD=true +GUNICORN_RELOAD=true +OPENAPI_CONTACT_EMAIL=some_human@email.com +OPENAPI_CONTACT_NAME="Some Human" +OPENAPI_TITLE="SPA Base Application for Starlite" +OPENAPI_VERSION=1.0.0 # Database -PYSPA_POSTGRES_ECHO=false -PYSPA_POSTGRES_URL=postgresql+asyncpg://postgres:mysecretpassword@db:5432/example-pg-docker +DB_ECHO=true +DB_ECHO_POOL=true +DB_POOL_DISABLE=false +DB_POOL_MAX_OVERFLOW=10 +DB_POOL_SIZE=5 +DB_POOL_TIMEOUT=30 +DB_URL=postgresql+asyncpg://advisor:welcome22@localhost:5432/advisor -# Gunicorn -PYSPA_GUNICORN_ACCESS_LOG=- -PYSPA_GUNICORN_ERROR_LOG=- -PYSPA_GUNICORN_HOST=0.0.0.0 -PYSPA_GUNICORN_KEEPALIVE=65 -PYSPA_GUNICORN_LOG_LEVEL=info -PYSPA_GUNICORN_PORT=8000 -PYSPA_GUNICORN_RELOAD=true -PYSPA_GUNICORN_THREADS=2 -PYSPA_GUNICORN_TIMEOUT=65 -PYSPA_GUNICORN_WORKERS=2 -PYSPA_GUNICORN_WORKER_CLASS=app.utils.restartable_worker.RestartableUvicornWorker +# Cache +CACHE_URL=redis://localhost:6379/0 -# Sentry -PYSPA_SENTRY_DSN= -PYSPA_SENTRY_TRACES_SAMPLE_RATE=0.0001 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..c8081756 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,12 @@ +{ + "configurations": [ + { + "name": "Python: File", + "type": "python", + "request": "launch", + "module": "pyspa.__main__:main", + "args": ["run", "server"], + "justMyCode": true + } + ] +} diff --git a/pyproject.toml b/pyproject.toml index b6836ed4..703d2b82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,8 +6,6 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python", @@ -17,8 +15,8 @@ classifiers = [ "Typing :: Typed", ] description = "Opinionated template for integrating Starlite with a SPA" -documentation = "https://cofin.github.io/pyspa" -homepage = "https://github.com/cofin/pyspa" +documentation = "https://cofin.github.io/starlite-spa" +homepage = "https://github.com/cofin/starlite-spa" include = ["CHANGELOG.md"] keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "spa"] license = "MIT" diff --git a/src/pyspa/api/__init__.py b/src/pyspa/api/__init__.py index e1de7b6b..35531274 100644 --- a/src/pyspa/api/__init__.py +++ b/src/pyspa/api/__init__.py @@ -1,3 +1,17 @@ -from . import routes +from starlite import Router -__all__ = ["routes"] +from pyspa.api import routes +from pyspa.config.paths import urls + +router = Router( + path=urls.API_BASE, + route_handlers=[ + routes.health_router, + routes.access_router, + routes.user_router, + routes.collection_router, + ], +) + + +__all__ = ["routes", "router"] diff --git a/src/pyspa/api/routes/__init__.py b/src/pyspa/api/routes/__init__.py index b1ef14a9..c54a44a2 100644 --- a/src/pyspa/api/routes/__init__.py +++ b/src/pyspa/api/routes/__init__.py @@ -1,8 +1,8 @@ from starlite import Router -from pyspa.web.routes import collection, health +from pyspa.api.routes import collection, health, user -__all__ = ["collection_router", "health_router", "organization_router", "access_router", "user_router"] +__all__ = ["collection_router", "health_router", "access_router", "user_router"] collection_router = Router( path="", @@ -12,13 +12,9 @@ path="", route_handlers=[health.health_check], ) -organization_router = Router( - path="", - route_handlers=[], -) access_router = Router( path="", - route_handlers=[], + route_handlers=[user.login, user.signup], ) user_router = Router( path="", diff --git a/src/pyspa/api/routes/user.py b/src/pyspa/api/routes/user.py index 4eb9a6e2..c9f8c44c 100644 --- a/src/pyspa/api/routes/user.py +++ b/src/pyspa/api/routes/user.py @@ -1,28 +1,29 @@ import logging from sqlalchemy.ext.asyncio import AsyncSession -from starlite import Body, MediaType, RequestEncodingType, Response, post +from starlite import Body, MediaType, Request, RequestEncodingType, post from pyspa import schemas, services from pyspa.config.paths import urls -from pyspa.core import security logger = logging.getLogger(__name__) # Given an instance of 'JWTAuth' we can create a login handler function: @post(path=urls.ACCESS_TOKEN, media_type=MediaType.JSON, cache=False, tags=["Access"]) -async def user_login( - db: AsyncSession, - data: schemas.UserLogin = Body(media_type=RequestEncodingType.URL_ENCODED), -) -> Response[schemas.User]: +async def login( + db: AsyncSession, request: Request, data: schemas.UserLogin = Body(media_type=RequestEncodingType.URL_ENCODED) +) -> schemas.User: # we have a user instance - probably by retrieving it from persistence using another lib. # what's important for our purposes is to have an identifier: user = await services.user.authenticate(db, data.username, data.password) - response = security.oauth2_authentication.login(identifier=str(user.id), response_body=user) - logger.info(response.headers["authorization"]) + request.set_session({"user_id": user.id}) + logger.info(f"authenticated user: {user.email}") + return schemas.User.from_orm(user) - # you can do whatever you want to update the response instance here - # e.g. response.set_cookie(...) - return response +@post(path=urls.SIGNUP, tags=["Access"]) +async def signup(db: AsyncSession, request: Request, data: schemas.UserSignup) -> schemas.User: + user = await services.user.create(db, data) + request.set_session({"user_id": user.id}) + return schemas.User.from_orm(user) diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py index 4d5b8983..bb7c3efd 100644 --- a/src/pyspa/asgi.py +++ b/src/pyspa/asgi.py @@ -1,9 +1,9 @@ from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR from starlite import Provide, Starlite -from pyspa import db, middleware, web +from pyspa import api, db, middleware from pyspa.config import log_config, settings -from pyspa.core import cache, client, compression, cors, csrf, exceptions, openapi, security, static_files +from pyspa.core import cache, client, compression, cors, exceptions, openapi, security, static_files __all__ = ["app", "run_server"] @@ -16,10 +16,9 @@ openapi_config=openapi.config, compression_config=compression.config, cors_config=cors.config, - csrf_config=csrf.config, - route_handlers=[web.router], + route_handlers=[api.router], cache_config=cache.config, - middleware=[security.oauth2_authentication.middleware, middleware.DatabaseSessionMiddleware], + middleware=[security.auth.middleware, middleware.DatabaseSessionMiddleware], dependencies={"db": Provide(db.db_session)}, static_files_config=static_files.config, allowed_hosts=settings.app.BACKEND_CORS_ORIGINS, diff --git a/src/pyspa/config/application.py b/src/pyspa/config/application.py index b59be9fa..8bbb9271 100644 --- a/src/pyspa/config/application.py +++ b/src/pyspa/config/application.py @@ -67,7 +67,7 @@ class Config: case_sensitive = True NAME: str = "optimus-prime" - SECRET_KEY: SecretStr + SECRET_KEY: SecretBytes BUILD_NUMBER: str = __version__ DEBUG: bool = False DEFAULT_PAGINATION_LIMIT: int = 10 diff --git a/src/pyspa/core/guards.py b/src/pyspa/core/guards.py index 5a6e1bea..413f03e2 100644 --- a/src/pyspa/core/guards.py +++ b/src/pyspa/core/guards.py @@ -50,10 +50,9 @@ def requires_team_admin(request: Request, _: BaseRouteHandler) -> None: def requires_team_ownership(request: Request, _: BaseRouteHandler) -> None: team_id = UUID4(request.path_params["team_id"]) - if services.user.is_superuser(request.user): + if services.user.is_superuser(request.user) or services.user.is_team_owner(request.user, team_id): return None - if not services.user.is_team_owner(request.user, team_id): - raise NotAuthorizedException("Insufficient permissions to access team.") + raise NotAuthorizedException("Insufficient permissions to access team.") class CheckPayloadMismatch: diff --git a/src/pyspa/core/openapi.py b/src/pyspa/core/openapi.py index 7172c4c7..e4eb0c97 100644 --- a/src/pyspa/core/openapi.py +++ b/src/pyspa/core/openapi.py @@ -2,7 +2,7 @@ from starlite import OpenAPIConfig from pyspa.config import settings -from pyspa.core.security import oauth2_authentication +from pyspa.core.security import auth config = OpenAPIConfig( title=settings.openapi.TITLE or settings.app.NAME, @@ -10,8 +10,8 @@ contact=Contact(name=settings.openapi.CONTACT_NAME, email=settings.openapi.CONTACT_EMAIL), use_handler_docstrings=True, root_schema_site="elements", - components=[oauth2_authentication.openapi_components], - security=[oauth2_authentication.security_requirement], + components=[auth.openapi_components], + security=[auth.security_requirement], ) """ OpenAPI config for app, see [OpenAPISettings][starlite_bedrock.config.OpenAPISettings] diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py index 71ad4db1..1aac3a1f 100644 --- a/src/pyspa/core/security.py +++ b/src/pyspa/core/security.py @@ -1,49 +1,37 @@ import base64 import logging -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Union from passlib.context import CryptContext +from pydantic import UUID4 +from starlite import NotAuthorizedException +from starlite_sessions import SessionAuth from pyspa import db, services from pyspa.config import paths, settings -from pyspa.middleware import OAuth2PasswordBearerAuth from pyspa.utils.asyncer import run_async if TYPE_CHECKING: - from pydantic import SecretStr + from pydantic import SecretBytes, SecretStr from pyspa.models import User logger = logging.getLogger() -class SecurityException(Exception): - """Base exception for security""" - - -class UserInactiveException(SecurityException): - """Inactive User""" - - -class AuthenticationInvalidException(SecurityException): - """Inactive User""" - - -class AccessForbiddenException(SecurityException): - """Not enough permissions""" - - -async def current_user(sub: str) -> "User": - user = await services.user.get_by_username(db.db_session(), sub) +async def current_user(session: dict[str, Any]) -> "User": + user_id = UUID4(session.get("user_id")) if session.get("user_id") else None + if not user_id: + raise NotAuthorizedException + user = await services.user.get_by_id(db.db_session(), user_id) if user: return user - raise AccessForbiddenException + raise NotAuthorizedException -oauth2_authentication = OAuth2PasswordBearerAuth( # nosec +auth = SessionAuth( retrieve_user_handler=current_user, - token_secret=settings.app.SECRET_KEY.get_secret_value(), - token_url=paths.urls.ACCESS_TOKEN, + secret=settings.app.SECRET_KEY, exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], ) @@ -55,7 +43,7 @@ def get_encryption_key(secret: str) -> bytes: return base64.urlsafe_b64encode(padded_secret.encode()) -async def get_password_hash(password: "SecretStr") -> str: +async def get_password_hash(password: Union["SecretBytes", "SecretStr"]) -> str: """Get password hash Args: password: Plain password @@ -66,7 +54,7 @@ async def get_password_hash(password: "SecretStr") -> str: return pw_hash -async def verify_password(plain_password: "SecretStr", hashed_password: str) -> bool: +async def verify_password(plain_password: Union["SecretBytes", "SecretStr"], hashed_password: str) -> bool: """Verify password Args: plain_password: Plain password diff --git a/src/pyspa/middleware/jwt.py b/src/pyspa/middleware/jwt.py index 8205f9d2..7d586c7b 100644 --- a/src/pyspa/middleware/jwt.py +++ b/src/pyspa/middleware/jwt.py @@ -53,7 +53,7 @@ def openapi_components(self) -> Components: self.openapi_security_scheme_name: SecurityScheme( type="oauth2", name=self.auth_header, - security_scheme_in="header", + security_scheme_in="cookie", description="OAUTH2 password bearer authentication and authorization.", scheme="Bearer", bearerFormat="JWT", @@ -139,7 +139,7 @@ async def authenticate_request(self, connection: "HTTPConnection") -> Authentica raise NotAuthorizedException("Authorization required to access") -def coalesce(iterable: list[Optional[str]], default: str | None = None, pred: Any = None) -> str | None: +def coalesce(iterable: list[Optional[str]], default: str | None = None, pred: "Any" = None) -> str | None: """Returns the first non-null value in the iterable. If no true value is found, returns *default* diff --git a/src/pyspa/services/base.py b/src/pyspa/services/base.py index e69c94c5..bf0e56bc 100644 --- a/src/pyspa/services/base.py +++ b/src/pyspa/services/base.py @@ -89,7 +89,7 @@ async def get_by_id( db_obj = await self.repository.get_by_id(db, id, options) return db_obj or None - async def get( + async def get_one_or_none( self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any ) -> Optional[SchemaType]: """ @@ -116,7 +116,7 @@ async def get( db_obj = await self.repository.get_one_or_none(db, statement) return db_obj or None - async def get_multi( + async def get( self, db: "AsyncSession", *args: Any, diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index ba7b191c..45639987 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -1,6 +1,5 @@ from typing import TYPE_CHECKING, Any, Optional -from pydantic import SecretStr from sqlalchemy import orm, select from pyspa import models, repositories, schemas @@ -14,7 +13,7 @@ ) if TYPE_CHECKING: - from pydantic import UUID4 + from pydantic import UUID4, SecretStr from sqlalchemy.ext.asyncio import AsyncSession @@ -99,10 +98,10 @@ async def get_by_email( async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas.UserSignup) -> models.User: obj_data = obj_in.dict(exclude_unset=True, exclude_none=True) - password: str = obj_data.pop("password") - invitation_id: str = obj_data.pop("invitation_id", None) - team_name: str = obj_data.pop("team_name", None) - obj_data.update({"hashed_password": security.get_password_hash(SecretStr(password))}) + password: "SecretStr" = obj_data.pop("password") + invitation_id: UUID4 | None = obj_data.pop("invitation_id", None) + team_name: str | None = obj_data.pop("team_name", None) + obj_data.update({"hashed_password": await security.get_password_hash(password)}) user = models.User.from_dict(**obj_data) if team_name: diff --git a/src/pyspa/web/__init__.py b/src/pyspa/web/__init__.py index 2db001a3..139597f9 100644 --- a/src/pyspa/web/__init__.py +++ b/src/pyspa/web/__init__.py @@ -1,17 +1,2 @@ -from starlite import Router -from pyspa.config.paths import urls -from pyspa.web import routes -router = Router( - path=urls.API_BASE, - route_handlers=[ - routes.health_router, - routes.user_router, - routes.collection_router, - routes.organization_router, - ], -) - - -__all__ = ["routes"] From 3a224748edbdc7be8401c7ebf9f2622b994e8e98 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Fri, 16 Sep 2022 17:16:54 -0500 Subject: [PATCH 024/397] working auth backend --- poetry.lock | 2 +- src/pyspa/api/__init__.py | 3 +-- src/pyspa/api/routes/__init__.py | 2 +- src/pyspa/api/routes/collection.py | 39 +++++++++++++++++++----------- src/pyspa/asgi.py | 3 ++- src/pyspa/config/paths.py | 9 +++---- src/pyspa/core/__init__.py | 15 +++++++++++- src/pyspa/core/guards.py | 4 +-- src/pyspa/core/openapi.py | 25 ++++++++++++++++--- src/pyspa/core/response.py | 23 ++++++++++++++++++ src/pyspa/services/user.py | 2 +- 11 files changed, 96 insertions(+), 31 deletions(-) create mode 100644 src/pyspa/core/response.py diff --git a/poetry.lock b/poetry.lock index 2f02adbb..e3fb4781 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1553,7 +1553,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "a3056724a7c4ef1d83dcdf60fd4498d34c5f62f8" +resolved_reference = "cb0ea3481140c3780622032b4cde2222485ff711" [[package]] name = "starlite-jwt" diff --git a/src/pyspa/api/__init__.py b/src/pyspa/api/__init__.py index 35531274..844c9737 100644 --- a/src/pyspa/api/__init__.py +++ b/src/pyspa/api/__init__.py @@ -1,10 +1,9 @@ from starlite import Router from pyspa.api import routes -from pyspa.config.paths import urls router = Router( - path=urls.API_BASE, + path="", route_handlers=[ routes.health_router, routes.access_router, diff --git a/src/pyspa/api/routes/__init__.py b/src/pyspa/api/routes/__init__.py index c54a44a2..619c1e59 100644 --- a/src/pyspa/api/routes/__init__.py +++ b/src/pyspa/api/routes/__init__.py @@ -6,7 +6,7 @@ collection_router = Router( path="", - route_handlers=[collection.handle_collection_upload], + route_handlers=[collection.CollectionController], ) health_router = Router( path="", diff --git a/src/pyspa/api/routes/collection.py b/src/pyspa/api/routes/collection.py index eb41107b..9525aae7 100644 --- a/src/pyspa/api/routes/collection.py +++ b/src/pyspa/api/routes/collection.py @@ -1,7 +1,11 @@ import logging -from starlite import Body, RequestEncodingType, UploadFile, post +from pydantic import UUID4 +from sqlalchemy.ext.asyncio import AsyncSession +from starlite import Body, Parameter, RequestEncodingType, UploadFile, post +from starlite.controller import Controller +from pyspa.core import guards from pyspa.schemas import CamelizedBaseSchema logger = logging.getLogger(__name__) @@ -15,16 +19,23 @@ class Config: arbitrary_types_allowed = True -@post( - path="/upload", - cache=False, - tags=["Collection"], -) -async def handle_collection_upload( - data: FormData = Body(media_type=RequestEncodingType.MULTI_PART), -) -> dict[str, str]: - """Upload a file""" - logger.info("Processing Uploaded File") - return { - "status": "file uploaded", - } +class CollectionController(Controller): + path = "/team/{team_id:uuid}" + guards = [guards.requires_team_membership, guards.requires_active_user] + + @post(path="/upload") + async def upload_file( + self, + db: AsyncSession, + team_id: UUID4 = Parameter( + title="Team ID", + description="The identifier for the uploaded file's team", + ), + data: FormData = Body(media_type=RequestEncodingType.MULTI_PART), + ) -> dict[str, str]: + """Upload a file""" + + logger.info("Processing Uploaded File") + return { + "status": "file uploaded", + } diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py index bb7c3efd..f606ae5f 100644 --- a/src/pyspa/asgi.py +++ b/src/pyspa/asgi.py @@ -3,7 +3,7 @@ from pyspa import api, db, middleware from pyspa.config import log_config, settings -from pyspa.core import cache, client, compression, cors, exceptions, openapi, security, static_files +from pyspa.core import cache, client, compression, cors, exceptions, openapi, response, security, static_files __all__ = ["app", "run_server"] @@ -18,6 +18,7 @@ cors_config=cors.config, route_handlers=[api.router], cache_config=cache.config, + response_class=response.Response, middleware=[security.auth.middleware, middleware.DatabaseSessionMiddleware], dependencies={"db": Provide(db.db_session)}, static_files_config=static_files.config, diff --git a/src/pyspa/config/paths.py b/src/pyspa/config/paths.py index eb35c510..f038653c 100644 --- a/src/pyspa/config/paths.py +++ b/src/pyspa/config/paths.py @@ -11,12 +11,11 @@ class ApiPaths: OPENAPI_SCHEMA = "/schema" - API_BASE = "/api" - HEALTH = "/health" + HEALTH = "/api/health" # Auth - ACCESS_TOKEN = "/access/login" # nosec - REFRESH_TOKEN = "/access/refresh" # nosec - SIGNUP = "/access/signup" + ACCESS_TOKEN = "/api/access/login" # nosec + REFRESH_TOKEN = "/api/access/refresh" # nosec + SIGNUP = "/api/access/signup" # STATIC = "/public" diff --git a/src/pyspa/core/__init__.py b/src/pyspa/core/__init__.py index 06c670a9..e0250251 100644 --- a/src/pyspa/core/__init__.py +++ b/src/pyspa/core/__init__.py @@ -1,4 +1,16 @@ -from pyspa.core import cache, client, compression, cors, csrf, guards, handlers, openapi, security, static_files +from pyspa.core import ( + cache, + client, + compression, + cors, + csrf, + guards, + handlers, + openapi, + response, + security, + static_files, +) __all__ = [ "cache", @@ -11,4 +23,5 @@ "openapi", "security", "static_files", + "response", ] diff --git a/src/pyspa/core/guards.py b/src/pyspa/core/guards.py index 413f03e2..cdb0ec55 100644 --- a/src/pyspa/core/guards.py +++ b/src/pyspa/core/guards.py @@ -32,7 +32,7 @@ def requires_superuser(request: Request, _: BaseRouteHandler) -> None: def requires_team_membership(request: Request, _: BaseRouteHandler) -> None: - team_id = UUID4(request.path_params["team_id"]) + team_id = request.path_params["team_id"] if services.user.is_superuser(request.user): return None if services.user.is_team_member(request.user, team_id): @@ -41,7 +41,7 @@ def requires_team_membership(request: Request, _: BaseRouteHandler) -> None: def requires_team_admin(request: Request, _: BaseRouteHandler) -> None: - team_id = UUID4(request.path_params["team_id"]) + team_id = request.path_params["team_id"] if services.user.is_superuser(request.user): return None if not services.user.is_team_admin(request.user, team_id): diff --git a/src/pyspa/core/openapi.py b/src/pyspa/core/openapi.py index e4eb0c97..a879dc4e 100644 --- a/src/pyspa/core/openapi.py +++ b/src/pyspa/core/openapi.py @@ -1,16 +1,35 @@ -from pydantic_openapi_schema.v3_1_0 import Contact +from pydantic_openapi_schema.v3_1_0 import Components, Contact, OAuthFlow, OAuthFlows, SecurityScheme from starlite import OpenAPIConfig -from pyspa.config import settings +from pyspa.config import paths, settings from pyspa.core.security import auth +auth_openapi_components = Components( + securitySchemes={ + "AccountLogin": SecurityScheme( + type="oauth2", + name="session", + security_scheme_in="cookie", + description="OAUTH2 password bearer authentication and authorization.", + scheme="Bearer", + bearerFormat="JWT", + flows=OAuthFlows( + password=OAuthFlow( + tokenUrl=paths.urls.ACCESS_TOKEN, + scopes={}, + ) + ), + ) + } +) + config = OpenAPIConfig( title=settings.openapi.TITLE or settings.app.NAME, version=settings.openapi.VERSION, contact=Contact(name=settings.openapi.CONTACT_NAME, email=settings.openapi.CONTACT_EMAIL), use_handler_docstrings=True, root_schema_site="elements", - components=[auth.openapi_components], + components=[auth_openapi_components], security=[auth.security_requirement], ) """ diff --git a/src/pyspa/core/response.py b/src/pyspa/core/response.py new file mode 100644 index 00000000..062aa020 --- /dev/null +++ b/src/pyspa/core/response.py @@ -0,0 +1,23 @@ +from typing import Any + +from asyncpg.pgproto import pgproto +from starlite import Response as _Response + + +class Response(_Response): + @staticmethod + def serializer(value: Any) -> Any: + """Custom serializer method that handles the `asyncpg.pgproto.UUID` + implementation. + + Parameters + ---------- + value : Any + + Returns + ------- + Any + """ + if isinstance(value, pgproto.UUID): + return str(value) + return _Response.serializer(value) diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 45639987..8cd67940 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -102,7 +102,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. invitation_id: UUID4 | None = obj_data.pop("invitation_id", None) team_name: str | None = obj_data.pop("team_name", None) obj_data.update({"hashed_password": await security.get_password_hash(password)}) - user = models.User.from_dict(**obj_data) + user = self.model(**obj_data) if team_name: """Create the team the user entered into the form""" From 5094c5c73bf3f810c895eab931e270eeb3e659b4 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Fri, 16 Sep 2022 21:01:20 -0500 Subject: [PATCH 025/397] add more config for vite app --- .gitignore | 26 +++++++++++ package.json | 22 ++++++++++ poetry.lock | 16 +++---- pyproject.toml | 3 ++ src/pyspa/asgi.py | 43 +------------------ src/pyspa/cli/commands/run.py | 15 ++++--- src/pyspa/web/__init__.py | 2 - src/pyspa/web/assets/{index.html => .gitkeep} | 0 src/pyspa/web/ts/index.html | 0 tsconfig.json | 21 +++++++++ tsconfig.node.json | 9 ++++ 11 files changed, 100 insertions(+), 57 deletions(-) create mode 100644 package.json rename src/pyspa/web/assets/{index.html => .gitkeep} (100%) create mode 100644 src/pyspa/web/ts/index.html create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json diff --git a/.gitignore b/.gitignore index b7901738..b99b5b80 100644 --- a/.gitignore +++ b/.gitignore @@ -134,3 +134,29 @@ dmypy.json # .vscode .venv .venv + + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/package.json b/package.json new file mode 100644 index 00000000..a836a589 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "starlite-spa", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.17", + "@types/react-dom": "^18.0.6", + "@vitejs/plugin-react": "^2.1.0", + "typescript": "^4.6.4", + "vite": "^3.1.0" + } +} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index e3fb4781..074b3209 100644 --- a/poetry.lock +++ b/poetry.lock @@ -953,7 +953,7 @@ python-versions = "*" name = "nodeenv" version = "1.7.0" description = "Node.js virtual environment builder" -category = "dev" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" @@ -1117,7 +1117,7 @@ xeger = "*" [[package]] name = "pydantic-openapi-schema" -version = "1.2.0" +version = "1.3.0" description = "OpenAPI Schema using pydantic. Forked for Starlite-API from 'openapi-schema-pydantic'." category = "main" optional = false @@ -1125,7 +1125,7 @@ python-versions = ">=3.7" [package.dependencies] email-validator = "*" -pydantic = "*" +pydantic = ">=1.10.0" [[package]] name = "pyflakes" @@ -1414,7 +1414,7 @@ pyasn1 = ">=0.1.3" name = "setuptools" version = "65.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" @@ -1507,7 +1507,7 @@ sqlcipher = ["sqlcipher3_binary"] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "04ea009a83d9c5f1f9e7ae66420e9124bae7ce66" +resolved_reference = "f582618afe1a5b112a1a22ddd0cbfcc8b97c8f09" [[package]] name = "starlette" @@ -1886,7 +1886,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "0b46c70ecd6705ff7528404f39b4870ed74a979415f247e6c5568ca54e85b2c7" +content-hash = "0119051b212bbec61ed4e587a53d9ee813192bc8d0cdddf912c73daf4f31ddf1" [metadata.files] alembic = [ @@ -2791,8 +2791,8 @@ pydantic-factories = [ {file = "pydantic_factories-1.6.2-py3-none-any.whl", hash = "sha256:c7d5ef83eadb0f1a02090b2b381599b71d6830296a9d631f31bf95d0cbfc00d7"}, ] pydantic-openapi-schema = [ - {file = "pydantic-openapi-schema-1.2.0.tar.gz", hash = "sha256:f65bb3d5fd68b8e84c92f425d2392ba987b0cafea433f5bf3f3347086eaf8d92"}, - {file = "pydantic_openapi_schema-1.2.0-py3-none-any.whl", hash = "sha256:cab8f643acf0d4d01042db0e7c3899d4f8a455c0f31a3ce6fba3e0706beee4e9"}, + {file = "pydantic-openapi-schema-1.3.0.tar.gz", hash = "sha256:2aed6913080f1dae94234e00d0905504c6aab65ab6afe246ed7aa98da989f69e"}, + {file = "pydantic_openapi_schema-1.3.0-py3-none-any.whl", hash = "sha256:37a264596a3cd0c2627cf98e22fbf1231e76c19cd83c536d847fa17a2e80c211"}, ] pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, diff --git a/pyproject.toml b/pyproject.toml index 703d2b82..2e9b7afb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,8 @@ typer = "*" universal_pathlib = "*" uvicorn = {extras = ["standard"], version = "*"} +greenlet = "*" + [tool.poetry.group.dev.dependencies] Jinja2 = "*" autoflake = "*" @@ -89,6 +91,7 @@ types-python-jose = "*" types-pyyaml = "*" types-redis = "*" types-requests = "*" +nodeenv = "*" [build-system] build-backend = "poetry.core.masonry.api" diff --git a/src/pyspa/asgi.py b/src/pyspa/asgi.py index f606ae5f..12c6457b 100644 --- a/src/pyspa/asgi.py +++ b/src/pyspa/asgi.py @@ -5,7 +5,7 @@ from pyspa.config import log_config, settings from pyspa.core import cache, client, compression, cors, exceptions, openapi, response, security, static_files -__all__ = ["app", "run_server"] +__all__ = ["app"] app = Starlite( @@ -24,44 +24,3 @@ static_files_config=static_files.config, allowed_hosts=settings.app.BACKEND_CORS_ORIGINS, ) - - -"""Application Web Server Gateway Interface - gunicorn.""" - - -def run_server( - host: str, - port: int, - http_workers: int, - reload: bool, - log_level: str, - asgi_app: str, - lifespan: str = "auto", - access_log: bool = True, -) -> None: - """Launches an ASGI application with Uvicorn - - Args: - host (str): _description_ - port (int): _description_ - http_workers (int): _description_ - reload (bool): _description_ - log_level (str): _description_ - asgi_app (str): _description_ - lifespan (str, optional): _description_. Defaults to "auto". - access_log (bool, optional): _description_. Defaults to True. - """ - import uvicorn # pylint: disable=[import-outside-toplevel] - - uvicorn.run( - app=asgi_app, - host=host, - port=port, - log_level=log_level, - log_config=None, # this tells uvicorn to not apply its customizations - reload=reload, - lifespan=lifespan, - access_log=access_log, - workers=http_workers, - reload_excludes=[".git", ".venv", "*.pyc"], - ) diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index 93561db1..aadf9c0c 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -1,6 +1,6 @@ import typer +import uvicorn -from pyspa.asgi import run_server from pyspa.cli.console import console from pyspa.config import settings from pyspa.config.logging import log_config @@ -44,11 +44,16 @@ def server( settings.server.PORT = port settings.server.HTTP_WORKERS = workers settings.server.RELOAD = reload - run_server( + + uvicorn.run( + app=settings.server.ASGI_APP, host=settings.server.HOST, port=settings.server.PORT, - http_workers=settings.server.HTTP_WORKERS, - reload=settings.server.RELOAD, log_level=settings.server.UVICORN_LOG_LEVEL.lower(), - asgi_app=settings.server.ASGI_APP, + log_config=None, # this tells uvicorn to not apply its customizations + reload=settings.server.RELOAD, + lifespan="auto", + access_log=True, + workers=settings.server.HTTP_WORKERS, + reload_excludes=[".git", ".venv", "*.pyc"], ) diff --git a/src/pyspa/web/__init__.py b/src/pyspa/web/__init__.py index 139597f9..e69de29b 100644 --- a/src/pyspa/web/__init__.py +++ b/src/pyspa/web/__init__.py @@ -1,2 +0,0 @@ - - diff --git a/src/pyspa/web/assets/index.html b/src/pyspa/web/assets/.gitkeep similarity index 100% rename from src/pyspa/web/assets/index.html rename to src/pyspa/web/assets/.gitkeep diff --git a/src/pyspa/web/ts/index.html b/src/pyspa/web/ts/index.html new file mode 100644 index 00000000..e69de29b diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..3d0a51a8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 00000000..9d31e2ae --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} From a76101ec25e3ef4eaf9378752ae7525b188b9879 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 17 Sep 2022 15:12:46 -0500 Subject: [PATCH 026/397] swap from typer to standard click. Added created user command. Added application header when launching interactively --- poetry.lock | 43 ++++------ pyproject.toml | 4 +- src/pyspa/cli/app.py | 40 ++++----- src/pyspa/cli/commands/manage.py | 140 +++++++++++++++++++++++++------ src/pyspa/cli/commands/run.py | 100 ++++++++++++++-------- src/pyspa/cli/console.py | 49 ++++++++++- 6 files changed, 267 insertions(+), 109 deletions(-) diff --git a/poetry.lock b/poetry.lock index 074b3209..66194485 100644 --- a/poetry.lock +++ b/poetry.lock @@ -71,7 +71,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" [[package]] name = "astroid" -version = "2.12.9" +version = "2.12.10" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -953,7 +953,7 @@ python-versions = "*" name = "nodeenv" version = "1.7.0" description = "Node.js virtual environment builder" -category = "main" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" @@ -1414,7 +1414,7 @@ pyasn1 = ">=0.1.3" name = "setuptools" version = "65.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" +category = "dev" optional = false python-versions = ">=3.7" @@ -1507,7 +1507,7 @@ sqlcipher = ["sqlcipher3_binary"] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "f582618afe1a5b112a1a22ddd0cbfcc8b97c8f09" +resolved_reference = "e7700b4a887c449f33bb5aaa8dfb96f4c76f2a54" [[package]] name = "starlette" @@ -1525,7 +1525,7 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "starlite" -version = "1.19.0" +version = "1.20.0" description = "Light-weight and flexible ASGI API Framework" category = "main" optional = false @@ -1553,7 +1553,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "cb0ea3481140c3780622032b4cde2222485ff711" +resolved_reference = "5ed67f651e7ebd4c04d5498f2c6c03f6670dd00f" [[package]] name = "starlite-jwt" @@ -1663,21 +1663,12 @@ docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-a testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] [[package]] -name = "typer" -version = "0.6.1" -description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "main" +name = "types-click" +version = "7.1.8" +description = "Typing stubs for click" +category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -click = ">=7.1.1,<9.0.0" - -[package.extras] -all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] -dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] -doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)"] -test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +python-versions = "*" [[package]] name = "types-freezegun" @@ -1886,7 +1877,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "0119051b212bbec61ed4e587a53d9ee813192bc8d0cdddf912c73daf4f31ddf1" +content-hash = "ebad0d470c5ee02d98586770775a9517cc68ded9451edfec0d39446650b91927" [metadata.files] alembic = [ @@ -1929,8 +1920,8 @@ astor = [ {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, ] astroid = [ - {file = "astroid-2.12.9-py3-none-any.whl", hash = "sha256:27a22f40e45af6d362498647a0940e8ae9c35f71cb572a1b6f8f810122a11918"}, - {file = "astroid-2.12.9.tar.gz", hash = "sha256:0dafbfcf4ebdecd3c8f6d742c9d9c88508229ca823d5c98ab872d964f3321e56"}, + {file = "astroid-2.12.10-py3-none-any.whl", hash = "sha256:997e0c735df60d4a4caff27080a3afc51f9bdd693d3572a4a0b7090b645c36c5"}, + {file = "astroid-2.12.10.tar.gz", hash = "sha256:81f870105d892e73bf535da77a8261aa5bde838fa4ed12bb2f435291a098c581"}, ] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, @@ -2972,9 +2963,9 @@ tox = [ {file = "tox-3.26.0-py2.py3-none-any.whl", hash = "sha256:bf037662d7c740d15c9924ba23bb3e587df20598697bb985ac2b49bdc2d847f6"}, {file = "tox-3.26.0.tar.gz", hash = "sha256:44f3c347c68c2c68799d7d44f1808f9d396fc8a1a500cbc624253375c7ae107e"}, ] -typer = [ - {file = "typer-0.6.1-py3-none-any.whl", hash = "sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e"}, - {file = "typer-0.6.1.tar.gz", hash = "sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73"}, +types-click = [ + {file = "types-click-7.1.8.tar.gz", hash = "sha256:b6604968be6401dc516311ca50708a0a28baa7a0cb840efd7412f0dbbff4e092"}, + {file = "types_click-7.1.8-py3-none-any.whl", hash = "sha256:8cb030a669e2e927461be9827375f83c16b8178c365852c060a34e24871e7e81"}, ] types-freezegun = [ {file = "types-freezegun-1.1.10.tar.gz", hash = "sha256:cb3a2d2eee950eacbaac0673ab50499823365ceb8c655babb1544a41446409ec"}, diff --git a/pyproject.toml b/pyproject.toml index 2e9b7afb..267205c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,10 +46,9 @@ sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "ma starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = []} starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} starlite-sessions = "*" -typer = "*" universal_pathlib = "*" uvicorn = {extras = ["standard"], version = "*"} - +click = "*" greenlet = "*" [tool.poetry.group.dev.dependencies] @@ -91,6 +90,7 @@ types-python-jose = "*" types-pyyaml = "*" types-redis = "*" types-requests = "*" +types-click = "*" nodeenv = "*" [build-system] diff --git a/src/pyspa/cli/app.py b/src/pyspa/cli/app.py index 1e590f53..31826fb4 100644 --- a/src/pyspa/cli/app.py +++ b/src/pyspa/cli/app.py @@ -1,23 +1,23 @@ -import typer +import multiprocessing +import platform +from typing import Any + +import click from pyspa.cli import commands +from pyspa.config import log_config, settings + + +@click.group(help=settings.app.NAME) +def cli(**options: dict[str, Any]) -> None: + log_config.configure() + if platform.system() == "Darwin": + multiprocessing.set_start_method("fork", force=True) + + +cli.add_command(commands.run.cli, name="run") +cli.add_command(commands.manage.cli, name="manage") + -cli = typer.Typer( - name="Simple Single Page Application", - no_args_is_help=True, - rich_markup_mode="markdown", - pretty_exceptions_enable=True, - pretty_exceptions_show_locals=False, - pretty_exceptions_short=True, - add_completion=False, -) -cli.add_typer( - commands.run.cli, - name="run", - help="Launch Starlite PySPA", -) -cli.add_typer( - commands.manage.cli, - name="manage", - help="Configure Starlite PySPA", -) +if __name__ == "__main__": + cli() diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index 99439348..ad3f6ad4 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -2,33 +2,31 @@ import logging import os import sys +from typing import Any, Optional -import typer +import click from alembic import command as migration_command from alembic.config import Config as AlembicConfig from rich.prompt import Confirm from sqlalchemy import Table from sqlalchemy.schema import DropTable -from pyspa import utils +from pyspa import schemas, services, utils from pyspa.asgi import app from pyspa.cli.console import console from pyspa.config import settings -from pyspa.db import engine +from pyspa.db import AsyncScopedSession, engine from pyspa.models import BaseModel, meta -cli = typer.Typer( - no_args_is_help=True, - rich_markup_mode="markdown", - pretty_exceptions_enable=True, - pretty_exceptions_show_locals=False, - pretty_exceptions_short=True, - add_completion=False, -) - logger = logging.getLogger() +@click.group(name="manage", invoke_without_command=False) +@click.pass_context +def cli(**options: dict[str, Any]) -> None: + """System Administration Commands""" + + @cli.command(name="generate-random-key") def generate_random_key(length: int = 32) -> None: """Helper for admins to generate random 26 character string. @@ -41,14 +39,90 @@ def generate_random_key(length: int = 32) -> None: console.print(binascii.hexlify(os.urandom(length))) +@cli.command(name="create-user", help="Create a user") +@click.option( + "--email", + help="Email of the new user", + type=click.STRING, + required=False, + show_default=False, +) +@click.option( + "--full-name", + help="Full name of the new user", + type=click.STRING, + required=False, + show_default=False, +) +@click.option( + "--password", + help="Password", + type=click.STRING, + required=False, + show_default=False, +) +def create_user(email: Optional[str], full_name: Optional[str], password: Optional[str]) -> None: + """Create a user""" + + email = email or click.prompt("Email") + full_name = full_name or click.prompt("Full Name", show_default=True) + password = password or click.prompt("Password", hide_input=True) + user = utils.asyncer.run(services.user.create)( + db=AsyncScopedSession(), obj_in=schemas.UserSignup(email=email, full_name=full_name, password=password) + ) + console.print(f"User created: {user.email}") + + +# # Create Super User +# @cli.command(name="create-superuser", help="Create a superuser") +# def create_superuser(options: dict[str, Any]): +# """Create a superuser for Console""" + +# # prompt for user info +# email = click.prompt("Email") +# full_name = click.prompt("Full Name", show_default=True) +# password = click.prompt("Password", hide_input=True) + +# user = _create_user(email, full_name, password, is_superuser=True) +# console.print(f"Superuser created: {user.email}") + + +# @cli.command( +# name="promote-to-superuser", +# help="Promotes a user to application superuser", +# ) +# def promote_to_superuser(options: dict[str,Any]): +# """Promotes a user to application superuser""" +# # prompt for user email to promote (or supply at CLI) +# email = click.prompt("Email", show_default=True, default="") +# with session() as db: +# user = runnify(managers.user.get_by_email)(email=email, db=db) +# if user: +# console.print(f"Promoting user: {user.email}") +# user_in = schemas.UserUpdate( +# email=user.email, +# is_superuser=True, +# ) +# user = runnify(services.user.update)(db_obj=user, obj_in=user_in, db=db) +# db.commit() +# else: +# console.print(f"User not found: {email}") + + @cli.command( name="export-openapi-schema", ) -def export_api_schema( - export_location: str = "domain/web/spec/openapi.json", -) -> None: +@click.option( + "--export-path", + help="Path to export the openapi schema.", + type=click.STRING, + default=".", + required=False, + show_default=False, +) +def export_api_schema(options: dict[str, Any]) -> None: """Push secrets to Secrets Provider""" - + export_location = options.get("export_location", ".") console.print("Exporting API Schema") application = app schema = application.openapi_schema @@ -62,7 +136,7 @@ def export_api_schema( name="create-database", help="Creates an empty postgres database and executes migrations", ) -def create_database() -> None: +def create_database(options: dict[str, Any]) -> None: """Create database DDL migrations.""" alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) @@ -73,7 +147,7 @@ def create_database() -> None: name="upgrade-database", help="Executes migrations to apply any outstanding database structures.", ) -def upgrade_database() -> None: +def upgrade_database(options: dict[str, Any]) -> None: """Upgrade the database to the latest revision.""" alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) @@ -84,12 +158,21 @@ def upgrade_database() -> None: name="reset-database", help="Executes migrations to apply any outstanding database structures.", ) -def reset_database( - no_prompt: bool = typer.Option(False, "--no-prompt", help="Do not prompt for confirmation"), -) -> None: +@click.option( + "--no-prompt", + help="Do not prompt for confirmation.", + type=click.BOOL, + default=False, + required=False, + show_default=True, +) +def reset_database(options: dict[str, Any]) -> None: """Resets the database to an initial empty state.""" + no_prompt = options.get("no_prompt", False) if not no_prompt: - typer.confirm("[bold red] Are you sure you want to drop and recreate all tables?") + Confirm.ask( + "[bold red] Are you sure you want to drop and recreate everything?", + ) alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) @@ -103,10 +186,17 @@ def reset_database( name="purge-database", help="Drops all tables.", ) -def purge_database( - no_prompt: bool = typer.Option(False, "--no-prompt", help="Do not prompt for confirmation"), -) -> None: +@click.option( + "--no-prompt", + help="Do not prompt for confirmation.", + type=click.BOOL, + default=False, + required=False, + show_default=True, +) +def purge_database(options: dict[str, Any]) -> None: """Drop all objects in the database.""" + no_prompt = options.get("no_prompt", False) if not no_prompt: confirm = Confirm.ask( "[bold red] Are you sure you want to drop everything?", diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index aadf9c0c..d57a0dda 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -1,49 +1,61 @@ -import typer -import uvicorn +import multiprocessing +import os +from typing import Any, Dict -from pyspa.cli.console import console +import click + +from pyspa.cli.console import console, print_prologue from pyspa.config import settings from pyspa.config.logging import log_config -cli = typer.Typer( - no_args_is_help=True, - rich_markup_mode="markdown", - pretty_exceptions_enable=True, - pretty_exceptions_show_locals=False, - pretty_exceptions_short=True, - add_completion=False, -) + +@click.group(name="run", invoke_without_command=False) +@click.pass_context +def cli(_: Dict[str, Any]) -> None: + """Run Commands""" -@cli.command(name="server") -def server( - host: str = typer.Option( - settings.server.HOST, - "--host", - "-h", - help="Host interface to listen on. Use 0.0.0.0 for all available interfaces.", - ), - port: int = typer.Option(settings.server.PORT, "--port", "-p", help="Port to listen on."), - workers: int = typer.Option( - settings.server.HTTP_WORKERS, - "--workers", - "-w", - help="Number of HTTP workers to run.", - ), - reload: bool = typer.Option( - False, - "--reload", - "-r", - help="Reload the application on code changes", - ), -) -> None: +@cli.command(name="server", help="Starts the application server") +@click.option( + "--host", + help="Host interface to listen on. Use 0.0.0.0 for all available interfaces.", + type=click.STRING, + default=settings.server.HOST, + required=False, + show_default=True, +) +@click.option( + "-p", + "--port", + help="Port to bind.", + type=click.INT, + default=settings.server.PORT, + required=False, + show_default=True, +) +@click.option( + "--http-workers", + help="The number of worker processes for handling requests.", + type=click.IntRange(min=1, max=multiprocessing.cpu_count()), + default=2, + required=False, + show_default=True, +) +@click.option("-r", "--reload", help="Enable reload", is_flag=True, default=False, type=click.BOOL) +@click.option("-v", "--verbose", help="Enable verbose logging.", is_flag=True, default=False, type=click.BOOL) +def run_server(host: str, port: int, http_workers: int, reload: bool, verbose: bool) -> None: """Run the API server.""" log_config.configure() - console.print("[bold blue]Launching API Server with Uvicorn") + print_prologue( + is_interactive=console.is_interactive, + custom_header=_generate_header_info(), + ) settings.server.HOST = host settings.server.PORT = port - settings.server.HTTP_WORKERS = workers + settings.server.HTTP_WORKERS = http_workers settings.server.RELOAD = reload + settings.app.LOG_LEVEL = "DEBUG" if bool(verbose) else "INFO" + import uvicorn uvicorn.run( app=settings.server.ASGI_APP, @@ -57,3 +69,21 @@ def server( workers=settings.server.HTTP_WORKERS, reload_excludes=[".git", ".venv", "*.pyc"], ) + + +def _generate_header_info(title: str = "Starlite Application") -> str: + """Generates the header info + + Args: + base_params (dict): The base params + Returns: + str: The header info + """ + return f""" + [bold blue]{title}[/bold blue] + Listening at: {settings.server.HOST} + Number of http workers: {settings.server.HTTP_WORKERS} + Number of background workers: {settings.server.BACKGROUND_WORKERS} + Host CPU: {multiprocessing.cpu_count()} cores + Host Memory: {round(os.sysconf("SC_PAGE_SIZE") * os.sysconf("SC_PHYS_PAGES") / 1024 / 1024)} MB + """ diff --git a/src/pyspa/cli/console.py b/src/pyspa/cli/console.py index a6f1a6c8..c46ca772 100644 --- a/src/pyspa/cli/console.py +++ b/src/pyspa/cli/console.py @@ -1,5 +1,52 @@ +from rich.columns import Columns from rich.console import Console +from rich.panel import Panel +from rich.rule import Rule +from rich.text import Text + +from pyspa.config import settings __all__ = ["console"] -console = Console(markup=True) +console = Console( + markup=True, + emoji=True, + color_system="truecolor", + stderr=False, +) +TEXT_LOGO = """ +Starlite +""" + + +def print_prologue( + is_interactive: bool, + custom_header: str = "", + command_title: str = "Run Logs", +) -> None: + """Prints the CLI application header + Args: + is_interactive (bool): Whether the console is interactive + base_params (dict): The base params for dynamic header + custom_header (str, optional): The custom header. Defaults to "". + command_title (str): The command title + Returns: + None + """ + if is_interactive: + if not custom_header: + custom_header = settings.app.NAME + console.print( + Columns( + ( + Panel(Text.from_ansi(TEXT_LOGO), width=26, height=11), + Panel( + custom_header, + height=11, + width=max(35, console.width - 27), + ), + ), + ), + overflow="ellipsis", + ) + console.print(Rule(title=command_title)) From 06d71f33165dd45fbdfc822720fb845865e77840 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 17 Sep 2022 18:36:32 -0500 Subject: [PATCH 027/397] added create user and promote to superuser cli --- src/pyspa/cli/commands/manage.py | 124 +++++++++++++++++++------------ 1 file changed, 77 insertions(+), 47 deletions(-) diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index ad3f6ad4..5c5f0b1d 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -2,20 +2,22 @@ import logging import os import sys -from typing import Any, Optional +from typing import Any, AsyncGenerator, Optional import click from alembic import command as migration_command from alembic.config import Config as AlembicConfig +from pydantic import EmailStr, SecretStr from rich.prompt import Confirm from sqlalchemy import Table +from sqlalchemy.ext.asyncio import AsyncConnection from sqlalchemy.schema import DropTable from pyspa import schemas, services, utils from pyspa.asgi import app from pyspa.cli.console import console from pyspa.config import settings -from pyspa.db import AsyncScopedSession, engine +from pyspa.db import engine from pyspa.models import BaseModel, meta logger = logging.getLogger() @@ -23,7 +25,7 @@ @click.group(name="manage", invoke_without_command=False) @click.pass_context -def cli(**options: dict[str, Any]) -> None: +def cli(_: dict[str, Any]) -> None: """System Administration Commands""" @@ -61,52 +63,74 @@ def generate_random_key(length: int = 32) -> None: required=False, show_default=False, ) -def create_user(email: Optional[str], full_name: Optional[str], password: Optional[str]) -> None: +@click.option( + "--team-name", + help="Team Name", + type=click.STRING, + required=False, + show_default=False, +) +@click.option( + "--superuser", + help="Is a superuser", + type=click.BOOL, + default=False, + required=False, + show_default=False, +) +def create_user( + email: Optional[str], + full_name: Optional[str], + password: Optional[str], + team_name: Optional[str], + superuser: Optional[bool], +) -> None: """Create a user""" email = email or click.prompt("Email") - full_name = full_name or click.prompt("Full Name", show_default=True) - password = password or click.prompt("Password", hide_input=True) - user = utils.asyncer.run(services.user.create)( - db=AsyncScopedSession(), obj_in=schemas.UserSignup(email=email, full_name=full_name, password=password) + full_name = full_name or click.prompt("Full Name", show_default=False) + password = password or click.prompt("Password", hide_input=True, confirmation_prompt=True) + team_name = team_name or click.prompt("Initial Team Name", show_default=True) + superuser = superuser or click.prompt("Create as superuser?", show_default=True, type=click.BOOL) + obj_in = schemas.UserSignup( + email=EmailStr(email), full_name=full_name, password=SecretStr(password), team_name=team_name ) - console.print(f"User created: {user.email}") - - -# # Create Super User -# @cli.command(name="create-superuser", help="Create a superuser") -# def create_superuser(options: dict[str, Any]): -# """Create a superuser for Console""" - -# # prompt for user info -# email = click.prompt("Email") -# full_name = click.prompt("Full Name", show_default=True) -# password = click.prompt("Password", hide_input=True) - -# user = _create_user(email, full_name, password, is_superuser=True) -# console.print(f"Superuser created: {user.email}") - - -# @cli.command( -# name="promote-to-superuser", -# help="Promotes a user to application superuser", -# ) -# def promote_to_superuser(options: dict[str,Any]): -# """Promotes a user to application superuser""" -# # prompt for user email to promote (or supply at CLI) -# email = click.prompt("Email", show_default=True, default="") -# with session() as db: -# user = runnify(managers.user.get_by_email)(email=email, db=db) -# if user: -# console.print(f"Promoting user: {user.email}") -# user_in = schemas.UserUpdate( -# email=user.email, -# is_superuser=True, -# ) -# user = runnify(services.user.update)(db_obj=user, obj_in=user_in, db=db) -# db.commit() -# else: -# console.print(f"User not found: {email}") + + async def _create_user(obj_in: schemas.UserSignup) -> None: + async with engine.begin() as db: + user = await services.user.create(db=db, obj_in=obj_in) + console.print(f"User created: {user.email}") + + utils.asyncer.run(_create_user)(obj_in) + + +@cli.command(name="promote-to-superuser", help="Promotes a user to application superuser") +@click.option( + "--email", + help="Email of the user", + type=click.STRING, + required=False, + show_default=False, +) +def promote_to_superuser(email: Optional[str]) -> None: + """Promotes a user to application superuser""" + email = email or click.prompt("Email") + + async def _promote_to_superuser(email: EmailStr) -> None: + async with engine.begin() as db: + user = await services.user.get_by_email(db=db, email=email) + if user: + console.print(f"Promoting user: {user.email}") + user_in = schemas.UserUpdate( + email=user.email, + is_superuser=True, + ) + user = await services.user.update(db_obj=user, obj_in=user_in, db=db) # type: ignore + console.print(f"Upgraded {email} to superuser") + else: + console.print(f"User not found: {email}") + + utils.asyncer.run(_promote_to_superuser)(email=email) @cli.command( @@ -227,13 +251,19 @@ async def drop_tables() -> None: async with engine.begin() as db: logger.info("[bold red] Dropping the db") await db.run_sync(BaseModel.metadata.drop_all) - logger.info("[bold red] Truncating the version table") + logger.info("[bold red] Dropping the version table") await db.execute( DropTable( - element=Table("ddl_version", meta), + element=Table(settings.db.MIGRATION_DDL_VERSION_TABLE, meta), if_exists=True, ) ) await db.commit() logger.info("Successfully dropped all objects") + + +async def _db() -> AsyncGenerator[AsyncConnection, None]: + + async with engine.begin() as db: + yield db From c89fa6f80c5dd890bf7160b0e2ecc19986abb4bc Mon Sep 17 00:00:00 2001 From: odiseo0 Date: Sun, 18 Sep 2022 12:53:55 -0400 Subject: [PATCH 028/397] Remove additional `arbitrary_types_allowed` --- src/pyspa/schemas/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pyspa/schemas/base.py b/src/pyspa/schemas/base.py index b7061fa1..dc5cb83f 100644 --- a/src/pyspa/schemas/base.py +++ b/src/pyspa/schemas/base.py @@ -28,7 +28,6 @@ class Config: use_enum_values = True json_loads = serializers.deserialize_object json_dumps = serializers.serialize_object - arbitrary_types_allowed = True json_encoders = { datetime: serializers.convert_datetime_to_gmt, SecretStr: lambda secret: secret.get_secret_value() if secret else None, From 40fc462c5be3a8b29b8427aa7b344ea5f5751a12 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 12:47:22 -0500 Subject: [PATCH 029/397] various changes to startup banner, swap to jwt auth, etc. --- pyproject.toml | 7 ++- src/pyspa/cli/commands/manage.py | 17 ++----- src/pyspa/cli/commands/run.py | 2 +- src/pyspa/cli/console.py | 20 ++------ src/pyspa/config/paths.py | 2 +- src/pyspa/core/openapi.py | 42 ++++++++--------- src/pyspa/core/security.py | 23 ++++++++-- src/pyspa/services/team.py | 6 +-- src/pyspa/utils/__init__.py | 4 +- src/pyspa/utils/import_tools.py | 23 ---------- src/pyspa/utils/module_loading.py | 73 ++++++++++++++++++++++++++++++ src/pyspa/utils/serializers.py | 23 ++++++---- tests/utils/test_module_loading.py | 15 ++++++ 13 files changed, 161 insertions(+), 96 deletions(-) delete mode 100644 src/pyspa/utils/import_tools.py create mode 100644 src/pyspa/utils/module_loading.py create mode 100644 tests/utils/test_module_loading.py diff --git a/pyproject.toml b/pyproject.toml index 267205c6..4f7d8986 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ python = ">=3.10,<4.0" redis = "*" rich = "*" sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["asyncio"]} -starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = []} +starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = ["picologging","brotli"]} starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} starlite-sessions = "*" universal_pathlib = "*" @@ -139,3 +139,8 @@ exclude_lines = [ addopts = "--cov=src -v --doctest-modules --doctest-glob=*.md --ignore=migrations" asyncio_mode = "auto" env_files = [".env.example"] + +[tool.bandit] +exclude_dirs = ["tests"] +tests = ["B201", "B301","B101"] +skips = ["B101", "B601"] diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index 5c5f0b1d..7ad4e49f 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -2,7 +2,7 @@ import logging import os import sys -from typing import Any, AsyncGenerator, Optional +from typing import Any, Optional import click from alembic import command as migration_command @@ -10,7 +10,6 @@ from pydantic import EmailStr, SecretStr from rich.prompt import Confirm from sqlalchemy import Table -from sqlalchemy.ext.asyncio import AsyncConnection from sqlalchemy.schema import DropTable from pyspa import schemas, services, utils @@ -98,7 +97,7 @@ def create_user( async def _create_user(obj_in: schemas.UserSignup) -> None: async with engine.begin() as db: - user = await services.user.create(db=db, obj_in=obj_in) + user = await services.user.create(db=db, obj_in=obj_in) # type: ignore[arg-type] console.print(f"User created: {user.email}") utils.asyncer.run(_create_user)(obj_in) @@ -118,19 +117,19 @@ def promote_to_superuser(email: Optional[str]) -> None: async def _promote_to_superuser(email: EmailStr) -> None: async with engine.begin() as db: - user = await services.user.get_by_email(db=db, email=email) + user = await services.user.get_by_email(db=db, email=email) # type: ignore[arg-type] if user: console.print(f"Promoting user: {user.email}") user_in = schemas.UserUpdate( email=user.email, is_superuser=True, ) - user = await services.user.update(db_obj=user, obj_in=user_in, db=db) # type: ignore + user = await services.user.update(db_obj=user, obj_in=user_in, db=db) # type: ignore[arg-type] console.print(f"Upgraded {email} to superuser") else: console.print(f"User not found: {email}") - utils.asyncer.run(_promote_to_superuser)(email=email) + utils.asyncer.run(_promote_to_superuser)(email=EmailStr(email)) @cli.command( @@ -261,9 +260,3 @@ async def drop_tables() -> None: ) await db.commit() logger.info("Successfully dropped all objects") - - -async def _db() -> AsyncGenerator[AsyncConnection, None]: - - async with engine.begin() as db: - yield db diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index d57a0dda..5cbc7dd1 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -80,7 +80,7 @@ def _generate_header_info(title: str = "Starlite Application") -> str: str: The header info """ return f""" - [bold blue]{title}[/bold blue] + [bold blue]✨ {title}[/bold blue] Listening at: {settings.server.HOST} Number of http workers: {settings.server.HTTP_WORKERS} Number of background workers: {settings.server.BACKGROUND_WORKERS} diff --git a/src/pyspa/cli/console.py b/src/pyspa/cli/console.py index c46ca772..d2f35bd1 100644 --- a/src/pyspa/cli/console.py +++ b/src/pyspa/cli/console.py @@ -1,8 +1,6 @@ -from rich.columns import Columns from rich.console import Console from rich.panel import Panel from rich.rule import Rule -from rich.text import Text from pyspa.config import settings @@ -15,7 +13,7 @@ stderr=False, ) TEXT_LOGO = """ -Starlite +[bold yellow]✨ Starlite """ @@ -35,18 +33,6 @@ def print_prologue( """ if is_interactive: if not custom_header: - custom_header = settings.app.NAME - console.print( - Columns( - ( - Panel(Text.from_ansi(TEXT_LOGO), width=26, height=11), - Panel( - custom_header, - height=11, - width=max(35, console.width - 27), - ), - ), - ), - overflow="ellipsis", - ) + custom_header = f"[bold blue]✨ {settings.app.NAME}" + console.print(Panel(custom_header, height=10, width=console.width), overflow="ellipsis") console.print(Rule(title=command_title)) diff --git a/src/pyspa/config/paths.py b/src/pyspa/config/paths.py index f038653c..979f07fa 100644 --- a/src/pyspa/config/paths.py +++ b/src/pyspa/config/paths.py @@ -3,7 +3,7 @@ from pyspa import utils -BASE_DIR: Final = utils.import_tools.module_to_os_path("pyspa") +BASE_DIR: Final = utils.module_loading.module_to_os_path("pyspa") PUBLIC_DIR = Path(BASE_DIR, "web/public") ASSETS_DIR = Path(BASE_DIR, "web/assets") diff --git a/src/pyspa/core/openapi.py b/src/pyspa/core/openapi.py index a879dc4e..a2d6c209 100644 --- a/src/pyspa/core/openapi.py +++ b/src/pyspa/core/openapi.py @@ -1,27 +1,27 @@ -from pydantic_openapi_schema.v3_1_0 import Components, Contact, OAuthFlow, OAuthFlows, SecurityScheme +from pydantic_openapi_schema.v3_1_0 import Contact from starlite import OpenAPIConfig -from pyspa.config import paths, settings +from pyspa.config import settings from pyspa.core.security import auth -auth_openapi_components = Components( - securitySchemes={ - "AccountLogin": SecurityScheme( - type="oauth2", - name="session", - security_scheme_in="cookie", - description="OAUTH2 password bearer authentication and authorization.", - scheme="Bearer", - bearerFormat="JWT", - flows=OAuthFlows( - password=OAuthFlow( - tokenUrl=paths.urls.ACCESS_TOKEN, - scopes={}, - ) - ), - ) - } -) +# auth_openapi_components = Components( +# securitySchemes={ +# "AccountLogin": SecurityScheme( +# type="oauth2", +# name="session", +# security_scheme_in="cookie", +# description="OAUTH2 password bearer authentication and authorization.", +# scheme="Bearer", +# bearerFormat="JWT", +# flows=OAuthFlows( +# password=OAuthFlow( +# tokenUrl=paths.urls.ACCESS_TOKEN, +# scopes={}, +# ) +# ), +# ) +# } +# ) config = OpenAPIConfig( title=settings.openapi.TITLE or settings.app.NAME, @@ -29,7 +29,7 @@ contact=Contact(name=settings.openapi.CONTACT_NAME, email=settings.openapi.CONTACT_EMAIL), use_handler_docstrings=True, root_schema_site="elements", - components=[auth_openapi_components], + components=[auth.openapi_components], security=[auth.security_requirement], ) """ diff --git a/src/pyspa/core/security.py b/src/pyspa/core/security.py index 1aac3a1f..2cadb70a 100644 --- a/src/pyspa/core/security.py +++ b/src/pyspa/core/security.py @@ -5,10 +5,10 @@ from passlib.context import CryptContext from pydantic import UUID4 from starlite import NotAuthorizedException -from starlite_sessions import SessionAuth from pyspa import db, services from pyspa.config import paths, settings +from pyspa.middleware.jwt import OAuth2PasswordBearerAuth from pyspa.utils.asyncer import run_async if TYPE_CHECKING: @@ -19,7 +19,7 @@ logger = logging.getLogger() -async def current_user(session: dict[str, Any]) -> "User": +async def current_user_from_session(session: dict[str, Any]) -> "User": user_id = UUID4(session.get("user_id")) if session.get("user_id") else None if not user_id: raise NotAuthorizedException @@ -29,9 +29,22 @@ async def current_user(session: dict[str, Any]) -> "User": raise NotAuthorizedException -auth = SessionAuth( - retrieve_user_handler=current_user, - secret=settings.app.SECRET_KEY, +async def current_user_from_token(sub: str) -> "User": + user = await services.user.get_by_email(db.db_session(), sub) + if user: + return user + raise NotAuthorizedException + + +# auth = SessionAuth( +# retrieve_user_handler=current_user_from_session, +# secret=settings.app.SECRET_KEY, +# exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], +# ) +auth = OAuth2PasswordBearerAuth( # nosec + retrieve_user_handler=current_user_from_token, + token_secret=settings.app.SECRET_KEY.get_secret_value().decode(), + token_url=paths.urls.ACCESS_TOKEN, exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], ) diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 43c20ced..89325153 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -1,12 +1,12 @@ from typing import TYPE_CHECKING, Any, List, Optional -from pydantic import UUID4 from sqlalchemy import orm, select from pyspa import models, repositories, schemas from pyspa.services.base import DataAccessService, DataAccessServiceException if TYPE_CHECKING: + from pydantic import UUID4 from sqlalchemy.ext.asyncio import AsyncSession @@ -26,13 +26,13 @@ async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models return await self.repository.create(db, team) async def get_teams_for_user( - self, db: "AsyncSession", user_id: UUID4, options: Optional[List[Any]] = None + self, db: "AsyncSession", user_id: "UUID4", options: Optional[List[Any]] = None ) -> List[schemas.Team]: """Get all workspaces for a user""" options = options if options else self.default_options statement = ( select(self.model) - .join(models.TeamMember, onclause=self.models.id == models.TeamMember.team_id, isouter=False) + .join(models.TeamMember, onclause=self.model.id == models.TeamMember.team_id, isouter=False) .where(models.TeamMember.user_id == user_id) .options(*options) ) diff --git a/src/pyspa/utils/__init__.py b/src/pyspa/utils/__init__.py index 1bcb3ed4..333e4ba2 100644 --- a/src/pyspa/utils/__init__.py +++ b/src/pyspa/utils/__init__.py @@ -1,3 +1,3 @@ -from pyspa.utils import asyncer, db, import_tools, serializers, text +from pyspa.utils import asyncer, db, module_loading, serializers, text -__all__ = ["db", "asyncer", "import_tools", "text", "serializers"] +__all__ = ["db", "asyncer", "module_loading", "text", "serializers"] diff --git a/src/pyspa/utils/import_tools.py b/src/pyspa/utils/import_tools.py deleted file mode 100644 index 3743aa40..00000000 --- a/src/pyspa/utils/import_tools.py +++ /dev/null @@ -1,23 +0,0 @@ -""" -All configuration is via environment variables. - -Take not of the environment variable prefixes required for each settings class, except -[`AppSettings`][starlite_bedrock.config.AppSettings]. -""" -import pkgutil -from functools import lru_cache -from importlib.machinery import SourceFileLoader -from pathlib import Path - - -@lru_cache -def module_to_os_path(dotted_path: str = "pyspa") -> Path: - """ - Returns the path to the base directory of the project or the module specified by `dotted_path`. - - Ensures that pkgutil returns a valid source file loader. - """ - src = pkgutil.get_loader(dotted_path) - if not isinstance(src, SourceFileLoader): - raise ValueError(f"Couldn't find the path for {dotted_path}") - return Path(str(src.path).removesuffix("/__init__.py")) diff --git a/src/pyspa/utils/module_loading.py b/src/pyspa/utils/module_loading.py new file mode 100644 index 00000000..1db7744d --- /dev/null +++ b/src/pyspa/utils/module_loading.py @@ -0,0 +1,73 @@ +""" +All configuration is via environment variables. + +Take not of the environment variable prefixes required for each settings class, except +[`AppSettings`][starlite_bedrock.config.AppSettings]. +""" +import pkgutil +import sys +from functools import lru_cache +from importlib import import_module +from importlib.machinery import SourceFileLoader +from pathlib import Path +from typing import TYPE_CHECKING, Any, Optional + +if TYPE_CHECKING: + from types import ModuleType + + +@lru_cache +def module_to_os_path(dotted_path: str = "pyspa") -> Path: + """ + Returns the path to the base directory of the project or the module specified by `dotted_path`. + + Ensures that pkgutil returns a valid source file loader. + """ + src = pkgutil.get_loader(dotted_path) + if not isinstance(src, SourceFileLoader): + raise ValueError(f"Couldn't find the path for {dotted_path}") + return Path(str(src.path).removesuffix("/__init__.py")) + + +def _is_loaded(module: Optional["ModuleType"]) -> bool: + spec = getattr(module, "__spec__", None) + initializing = getattr(spec, "_initializing", False) + return bool(module and spec and not initializing) + + +def _cached_import(module_path: str, class_name: str) -> Any: + """Import and cache a class from a module. + Args: + module_path (str): dotted path to module. + class_name (str): Class or function name. + Returns: + object: The imported class or function + """ + # Check whether module is loaded and fully initialized. + module = sys.modules.get(module_path) + if not _is_loaded(module): + module = import_module(module_path) + return getattr(module, class_name) # + + +def import_string(dotted_path: str) -> Any: + """Dotted Path Import. + Import a dotted module path and return the attribute/class designated by the + last name in the path. Raise ImportError if the import failed. + Args: + dotted_path (str): The path of the module to import. + Raises: + ImportError: Could not import the module. + Returns: + object: The imported object. + """ + + try: + module_path, class_name = dotted_path.rsplit(".", 1) + except ValueError as e: + raise ImportError(f"{dotted_path} doesn't look like a module path") from e + + try: + return _cached_import(module_path, class_name) + except AttributeError as e: + raise ImportError(f"Module '{module_path}' does not define a '{class_name}' attribute/class") from e diff --git a/src/pyspa/utils/serializers.py b/src/pyspa/utils/serializers.py index 503be64e..958ea746 100644 --- a/src/pyspa/utils/serializers.py +++ b/src/pyspa/utils/serializers.py @@ -2,38 +2,41 @@ from typing import Any, Union import orjson -from pydantic import SecretStr +from asyncpg.pgproto import pgproto +from pydantic import SecretBytes -def serialize_object(obj: Any) -> str: +def serialize_object(value: Any) -> str: """ Encodes json with the optimized ORJSON package orjson.dumps returns bytearray, so you can't pass it directly as json_serializer """ - def _serializer(obj: Any) -> Any: - if isinstance(obj, SecretStr): - return obj.get_secret_value() + def _serializer(value: Any) -> Any: + if isinstance(value, pgproto.UUID): + return str(value) + if isinstance(value, SecretBytes): + return value.get_secret_value() raise TypeError return orjson.dumps( - obj, + value, default=_serializer, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY, ).decode() -def deserialize_object(obj: Union[bytes, bytearray, memoryview, str, dict[str, Any]]) -> Any: +def deserialize_object(value: Union[bytes, bytearray, memoryview, str, dict[str, Any]]) -> Any: """ Decodes to an object with the optimized ORJSON package orjson.dumps returns bytearray, so you can't pass it directly as json_serializer """ - if isinstance(obj, dict): - return obj - return orjson.loads(obj) + if isinstance(value, dict): + return value + return orjson.loads(value) def convert_datetime_to_gmt(dt: datetime) -> str: diff --git a/tests/utils/test_module_loading.py b/tests/utils/test_module_loading.py new file mode 100644 index 00000000..669e48a6 --- /dev/null +++ b/tests/utils/test_module_loading.py @@ -0,0 +1,15 @@ +from starlite.middleware.compression.gzip import GZipMiddleware +from starlite.utils import import_string + + +def test_import_string() -> None: + cls = import_string("starlite.middleware.compression.gzip.GZipMiddleware") + assert type(cls) == type(GZipMiddleware) + + +def test_import_string_missing() -> None: + try: + cls = import_string("starlite.middleware.compression.gzip.BadClass") + except ImportError: + cls = None + assert cls is None From 18ab40b79ac1eefbf45c68d0fd9f16ba9ea5312e Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 12:49:02 -0500 Subject: [PATCH 030/397] renamed TeamRoleType to TeamRoles --- src/pyspa/models/__init__.py | 4 ++-- src/pyspa/models/team.py | 8 +++----- src/pyspa/schemas/team.py | 6 +++--- src/pyspa/schemas/team_invite.py | 6 +++--- src/pyspa/schemas/user.py | 2 +- src/pyspa/services/team.py | 2 +- src/pyspa/services/user.py | 5 ++--- 7 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/pyspa/models/__init__.py b/src/pyspa/models/__init__.py index b7541fcb..db4beb67 100644 --- a/src/pyspa/models/__init__.py +++ b/src/pyspa/models/__init__.py @@ -1,7 +1,7 @@ # export models here so that are easy to access via `models.*` from pyspa.models.base import BaseModel, meta -from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoleTypes +from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoless from pyspa.models.upload import Upload from pyspa.models.user import User -__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoleTypes", "Upload"] +__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoless", "Upload"] diff --git a/src/pyspa/models/team.py b/src/pyspa/models/team.py index 5d6f990d..e3ac0586 100644 --- a/src/pyspa/models/team.py +++ b/src/pyspa/models/team.py @@ -16,7 +16,7 @@ # # ---------------------------- # Roles -class TeamRoleTypes(str, Enum): +class TeamRoles(str, Enum): """Team Role valid values""" ADMIN = "ADMIN" @@ -65,9 +65,7 @@ class TeamMember(BaseModel, CreatedUpdatedAtMixin): __table_args__ = (sa.UniqueConstraint("user_id", "team_id"),) user_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) team_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("team.id"), nullable=False) - role: orm.Mapped[TeamRoleTypes] = sa.Column( - sa.String(length=50), default=TeamRoleTypes.MEMBER, nullable=False, index=True - ) + role: orm.Mapped[TeamRoles] = sa.Column(sa.String(length=50), default=TeamRoles.MEMBER, nullable=False, index=True) is_owner: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False, nullable=False) # ----------- # ORM Relationships @@ -86,7 +84,7 @@ class TeamInvitation(BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin): __tablename__ = "team_invitation" team_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("team.id"), nullable=False) email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, nullable=False) - role: orm.Mapped[TeamRoleTypes] = sa.Column(sa.String(length=50), default=TeamRoleTypes.MEMBER, nullable=False) + role: orm.Mapped[TeamRoles] = sa.Column(sa.String(length=50), default=TeamRoles.MEMBER, nullable=False) is_accepted: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False) invited_by_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) # ----------- diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index af2927bd..9cbd622b 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -56,12 +56,12 @@ class Team(CamelizedBaseSchema): # Properties to receive via API on creation class TeamMemberCreate(CamelizedBaseSchema): user_id: UUID4 - role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER + role: models.TeamRoless = models.TeamRoless.MEMBER # Properties to receive via API on update class TeamMemberUpdate(CamelizedBaseSchema): - role: Optional[models.TeamRoleTypes] = models.TeamRoleTypes.MEMBER + role: Optional[models.TeamRoless] = models.TeamRoless.MEMBER is_owner: Optional[bool] = False @@ -70,7 +70,7 @@ class TeamMember(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) email: EmailStr full_name: Optional[str] - role: Optional[models.TeamRoleTypes] = models.TeamRoleTypes.MEMBER + role: Optional[models.TeamRoless] = models.TeamRoless.MEMBER is_owner: Optional[bool] = False class Config: diff --git a/src/pyspa/schemas/team_invite.py b/src/pyspa/schemas/team_invite.py index b2e820bc..55a22d15 100644 --- a/src/pyspa/schemas/team_invite.py +++ b/src/pyspa/schemas/team_invite.py @@ -10,7 +10,7 @@ # Properties to receive via API on creation class TeamInvitationCreate(CamelizedBaseSchema): team_id: UUID4 - role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER + role: models.TeamRoless = models.TeamRoless.MEMBER email: EmailStr user_id: UUID4 @@ -18,7 +18,7 @@ class TeamInvitationCreate(CamelizedBaseSchema): # Properties to receive via API on update class TeamInvitationUpdate(CamelizedBaseSchema): team_id: UUID4 - role: models.TeamRoleTypes = models.TeamRoleTypes.MEMBER + role: models.TeamRoless = models.TeamRoless.MEMBER email: EmailStr is_accepted: bool @@ -28,6 +28,6 @@ class TeamInvitation(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) team_id: UUID4 email: EmailStr - role: models.TeamRoleTypes + role: models.TeamRoless invited_by: UUID4 is_accepted: bool diff --git a/src/pyspa/schemas/user.py b/src/pyspa/schemas/user.py index 08f2d0eb..5c3060a9 100644 --- a/src/pyspa/schemas/user.py +++ b/src/pyspa/schemas/user.py @@ -37,7 +37,7 @@ class UserTeam(CamelizedBaseSchema): team_id: "Optional[UUID4]" = None name: "Optional[str]" = None is_owner: "Optional[bool]" = False - role: "Optional[models.TeamRoleTypes]" = models.TeamRoleTypes.MEMBER + role: "Optional[models.TeamRoless]" = models.TeamRoless.MEMBER @classmethod def from_orm(cls, obj: Any) -> "UserTeam": diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 89325153..f9a2dc5a 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -22,7 +22,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # type: ignore[arg-type] ) team = self.model(**obj_data) - team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoleTypes.ADMIN, is_owner=True)) + team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoless.ADMIN, is_owner=True)) return await self.repository.create(db, team) async def get_teams_for_user( diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 8cd67940..480dcb62 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -107,7 +107,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. if team_name: """Create the team the user entered into the form""" team = models.Team(name=team_name) - team.members.append(models.TeamMember(user=user, role=models.TeamRoleTypes.ADMIN, is_owner=True)) + team.members.append(models.TeamMember(user=user, role=models.TeamRoless.ADMIN, is_owner=True)) db.add(team) # this will get committed with the user object below if invitation_id: invite = await team_invite.get_by_id(id=invitation_id, db=db) @@ -146,8 +146,7 @@ def is_team_member(db_obj: models.User, team_id: "UUID4") -> bool: def is_team_admin(db_obj: models.User, team_id: "UUID4") -> bool: """Returns true if the user is an admin of the team""" return any( - membership.team.id == team_id and membership.role == models.TeamRoleTypes.ADMIN - for membership in db_obj.teams + membership.team.id == team_id and membership.role == models.TeamRoless.ADMIN for membership in db_obj.teams ) @staticmethod From d91a775d247586a43d2e86b5258a1a6b7d8c5fff Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 12:57:16 -0500 Subject: [PATCH 031/397] remove reload_excludes as it prevented watchfiles from running --- src/pyspa/cli/commands/run.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index 5cbc7dd1..221656cf 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -67,7 +67,6 @@ def run_server(host: str, port: int, http_workers: int, reload: bool, verbose: b lifespan="auto", access_log=True, workers=settings.server.HTTP_WORKERS, - reload_excludes=[".git", ".venv", "*.pyc"], ) From 27462c2e2600eb6a2d2b616c101088e0d17046c2 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 12:57:34 -0500 Subject: [PATCH 032/397] Corrected typo --- src/pyspa/models/__init__.py | 4 ++-- src/pyspa/models/team.py | 13 ++++++++----- src/pyspa/models/upload.py | 2 ++ src/pyspa/models/user.py | 1 + src/pyspa/schemas/team.py | 6 +++--- src/pyspa/schemas/team_invite.py | 6 +++--- src/pyspa/schemas/user.py | 2 +- src/pyspa/services/team.py | 2 +- src/pyspa/services/user.py | 4 ++-- 9 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/pyspa/models/__init__.py b/src/pyspa/models/__init__.py index db4beb67..a0a1891d 100644 --- a/src/pyspa/models/__init__.py +++ b/src/pyspa/models/__init__.py @@ -1,7 +1,7 @@ # export models here so that are easy to access via `models.*` from pyspa.models.base import BaseModel, meta -from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoless +from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoles from pyspa.models.upload import Upload from pyspa.models.user import User -__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoless", "Upload"] +__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoles", "Upload"] diff --git a/src/pyspa/models/team.py b/src/pyspa/models/team.py index e3ac0586..f0f4d330 100644 --- a/src/pyspa/models/team.py +++ b/src/pyspa/models/team.py @@ -51,7 +51,7 @@ class Team(BaseModel, CreatedUpdatedAtMixin): ) pending_invitations: orm.Mapped[list["TeamInvitation"]] = orm.relationship( "TeamInvitation", - primaryjoin="and_(TeamInvitation.team_id==Team.id, TeamInvitation.is_accepted == False)", # noqa: E501 + primaryjoin="and_(TeamInvitation.team_id==Team.id, TeamInvitation.is_accepted == False)", viewonly=True, lazy="noload", ) @@ -71,10 +71,10 @@ class TeamMember(BaseModel, CreatedUpdatedAtMixin): # ORM Relationships # ------------ user: orm.Mapped["User"] = orm.relationship( - "User", back_populates="teams", lazy="joined", foreign_keys="TeamMember.user_id", active_history=True + "User", back_populates="teams", lazy="noload", foreign_keys="TeamMember.user_id", active_history=True ) team: orm.Mapped["Team"] = orm.relationship( - "Team", back_populates="members", lazy="joined", foreign_keys="TeamMember.team_id", active_history=True + "Team", back_populates="members", lazy="noload", foreign_keys="TeamMember.team_id", active_history=True ) @@ -87,8 +87,11 @@ class TeamInvitation(BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin): role: orm.Mapped[TeamRoles] = sa.Column(sa.String(length=50), default=TeamRoles.MEMBER, nullable=False) is_accepted: orm.Mapped[bool] = sa.Column(sa.Boolean, default=False) invited_by_id: orm.Mapped[UUID4] = sa.Column(sa.ForeignKey("user_account.id"), nullable=False) + invited_by_email: orm.Mapped[EmailStr] = sa.Column(t.EmailString, nullable=False) # ----------- # ORM Relationships # ------------ - team: orm.Mapped["Team"] = orm.relationship("Team", foreign_keys="TeamInvitation.team_id") - invited_by: orm.Mapped["User"] = orm.relationship("User", foreign_keys="TeamInvitation.invited_by_id") + team: orm.Mapped["Team"] = orm.relationship("Team", foreign_keys="TeamInvitation.team_id", lazy="noload") + invited_by: orm.Mapped["User"] = orm.relationship( + "User", foreign_keys="TeamInvitation.invited_by_id", lazy="noload" + ) diff --git a/src/pyspa/models/upload.py b/src/pyspa/models/upload.py index ab93abd7..eedb2a1d 100644 --- a/src/pyspa/models/upload.py +++ b/src/pyspa/models/upload.py @@ -26,6 +26,8 @@ class Upload(BaseModel, CreatedUpdatedAtMixin): team: orm.Mapped["Team"] = orm.relationship( "Team", back_populates="uploads", + lazy="noload", + join_depth=1, innerjoin=True, viewonly=True, ) diff --git a/src/pyspa/models/user.py b/src/pyspa/models/user.py index 6c283efc..e4d6a731 100644 --- a/src/pyspa/models/user.py +++ b/src/pyspa/models/user.py @@ -30,5 +30,6 @@ class User(BaseModel, CreatedUpdatedAtMixin): "TeamMember", back_populates="user", lazy="subquery", + join_depth=1, cascade="all, delete", ) diff --git a/src/pyspa/schemas/team.py b/src/pyspa/schemas/team.py index 9cbd622b..34b69a2d 100644 --- a/src/pyspa/schemas/team.py +++ b/src/pyspa/schemas/team.py @@ -56,12 +56,12 @@ class Team(CamelizedBaseSchema): # Properties to receive via API on creation class TeamMemberCreate(CamelizedBaseSchema): user_id: UUID4 - role: models.TeamRoless = models.TeamRoless.MEMBER + role: models.TeamRoles = models.TeamRoles.MEMBER # Properties to receive via API on update class TeamMemberUpdate(CamelizedBaseSchema): - role: Optional[models.TeamRoless] = models.TeamRoless.MEMBER + role: Optional[models.TeamRoles] = models.TeamRoles.MEMBER is_owner: Optional[bool] = False @@ -70,7 +70,7 @@ class TeamMember(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) email: EmailStr full_name: Optional[str] - role: Optional[models.TeamRoless] = models.TeamRoless.MEMBER + role: Optional[models.TeamRoles] = models.TeamRoles.MEMBER is_owner: Optional[bool] = False class Config: diff --git a/src/pyspa/schemas/team_invite.py b/src/pyspa/schemas/team_invite.py index 55a22d15..f9da21cf 100644 --- a/src/pyspa/schemas/team_invite.py +++ b/src/pyspa/schemas/team_invite.py @@ -10,7 +10,7 @@ # Properties to receive via API on creation class TeamInvitationCreate(CamelizedBaseSchema): team_id: UUID4 - role: models.TeamRoless = models.TeamRoless.MEMBER + role: models.TeamRoles = models.TeamRoles.MEMBER email: EmailStr user_id: UUID4 @@ -18,7 +18,7 @@ class TeamInvitationCreate(CamelizedBaseSchema): # Properties to receive via API on update class TeamInvitationUpdate(CamelizedBaseSchema): team_id: UUID4 - role: models.TeamRoless = models.TeamRoless.MEMBER + role: models.TeamRoles = models.TeamRoles.MEMBER email: EmailStr is_accepted: bool @@ -28,6 +28,6 @@ class TeamInvitation(CamelizedBaseSchema): id: UUID4 = Field(default_factory=uuid.uuid4) team_id: UUID4 email: EmailStr - role: models.TeamRoless + role: models.TeamRoles invited_by: UUID4 is_accepted: bool diff --git a/src/pyspa/schemas/user.py b/src/pyspa/schemas/user.py index 5c3060a9..38f1ba25 100644 --- a/src/pyspa/schemas/user.py +++ b/src/pyspa/schemas/user.py @@ -37,7 +37,7 @@ class UserTeam(CamelizedBaseSchema): team_id: "Optional[UUID4]" = None name: "Optional[str]" = None is_owner: "Optional[bool]" = False - role: "Optional[models.TeamRoless]" = models.TeamRoless.MEMBER + role: "Optional[models.TeamRoles]" = models.TeamRoles.MEMBER @classmethod def from_orm(cls, obj: Any) -> "UserTeam": diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index f9a2dc5a..355dfad9 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -22,7 +22,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # type: ignore[arg-type] ) team = self.model(**obj_data) - team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoless.ADMIN, is_owner=True)) + team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoles.ADMIN, is_owner=True)) return await self.repository.create(db, team) async def get_teams_for_user( diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index 480dcb62..c659e895 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -107,7 +107,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. if team_name: """Create the team the user entered into the form""" team = models.Team(name=team_name) - team.members.append(models.TeamMember(user=user, role=models.TeamRoless.ADMIN, is_owner=True)) + team.members.append(models.TeamMember(user=user, role=models.TeamRoles.ADMIN, is_owner=True)) db.add(team) # this will get committed with the user object below if invitation_id: invite = await team_invite.get_by_id(id=invitation_id, db=db) @@ -146,7 +146,7 @@ def is_team_member(db_obj: models.User, team_id: "UUID4") -> bool: def is_team_admin(db_obj: models.User, team_id: "UUID4") -> bool: """Returns true if the user is an admin of the team""" return any( - membership.team.id == team_id and membership.role == models.TeamRoless.ADMIN for membership in db_obj.teams + membership.team.id == team_id and membership.role == models.TeamRoles.ADMIN for membership in db_obj.teams ) @staticmethod From b233500c3b00f13c62fcee6c4acf955352276f9c Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 13:13:25 -0500 Subject: [PATCH 033/397] update health routes --- src/pyspa/api/routes/health.py | 28 ++++++++++++++++++++++------ src/pyspa/schemas/health.py | 3 +-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/pyspa/api/routes/health.py b/src/pyspa/api/routes/health.py index 00efc567..fa04480c 100644 --- a/src/pyspa/api/routes/health.py +++ b/src/pyspa/api/routes/health.py @@ -1,27 +1,43 @@ import logging +from typing import cast from sqlalchemy import text from sqlalchemy.ext.asyncio import AsyncSession -from starlite import MediaType, get +from starlite import MediaType, Response, get from pyspa import schemas from pyspa.config import settings from pyspa.config.paths import urls +from pyspa.core.cache import RedisAsyncioBackend +from pyspa.core.cache import config as cache_config from pyspa.version import __version__ logger = logging.getLogger() @get(path=urls.HEALTH, media_type=MediaType.JSON, cache=False, tags=["Server"]) -async def health_check(db: AsyncSession) -> schemas.SystemHealth: +async def health_check(db: AsyncSession) -> Response[schemas.SystemHealth]: """Health check handler""" logger.info("Checking Server Health") try: await db.execute(text("select count(1) from ddl_version")) - db_status = "online" + db_ping = True except ConnectionRefusedError: - db_status = "offline" + db_ping = False logger.error("Failed to connect to database") - return schemas.SystemHealth.parse_obj( - {"app": settings.app.NAME, "version": __version__, "status": "ok", "database_status": db_status} + db_status = "online" if db_ping else "offline" + cache = cache_config.backend + cache_ping = await cast("RedisAsyncioBackend", cache).ping() if cache else False + cache_status = "online" if cache_ping else "offline" + return Response( + content=schemas.SystemHealth.parse_obj( + { + "app": settings.app.NAME, + "version": __version__, + "database_status": db_status, + "cache_status": cache_status, + } + ), + status_code=200 if cache_status and db_status else 500, + media_type=MediaType.JSON, ) diff --git a/src/pyspa/schemas/health.py b/src/pyspa/schemas/health.py index 05365ce7..81a62ec4 100644 --- a/src/pyspa/schemas/health.py +++ b/src/pyspa/schemas/health.py @@ -9,8 +9,8 @@ class SystemHealth(CamelizedBaseSchema): app: str version: str - status: str database_status: str + cache_status: str class Config: """ @@ -20,5 +20,4 @@ class Config: schema_extra = { "app": settings.app.NAME, "version": settings.app.BUILD_NUMBER, - "status": "ok", } From ae717f837d5d835d0b8943c11a251f42639d2158 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 14:25:06 -0500 Subject: [PATCH 034/397] prevent duplicate loggers --- src/pyspa/config/logging.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pyspa/config/logging.py b/src/pyspa/config/logging.py index 49109a6e..83aab15b 100644 --- a/src/pyspa/config/logging.py +++ b/src/pyspa/config/logging.py @@ -63,18 +63,25 @@ def filter(self, record: logging.LogRecord) -> bool: "propagate": False, "filters": ["health_filter"], "level": settings.server.UVICORN_LOG_LEVEL.upper(), + "handlers": ["queue_listener"], + }, + "uvicorn.error": { + "propagate": False, + "level": settings.server.UVICORN_LOG_LEVEL.upper(), + "handlers": ["queue_listener"], }, - "uvicorn.error": {"propagate": False, "level": settings.server.UVICORN_LOG_LEVEL.upper()}, "sqlalchemy": { - "propagate": True, + "propagate": False, "level": "WARNING", + "handlers": ["queue_listener"], }, "starlite": { "level": "WARNING", "propagate": True, + "handlers": ["queue_listener"], }, "pydantic_openapi_schema": { - "propagate": True, + "propagate": False, "level": "WARNING", "handlers": ["queue_listener"], }, From 484e74ede07b707f36a76471c19cd767e21b87d6 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 17:36:20 -0500 Subject: [PATCH 035/397] use scoped session for service interaction --- src/pyspa/cli/commands/manage.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pyspa/cli/commands/manage.py b/src/pyspa/cli/commands/manage.py index 7ad4e49f..db1be80f 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/pyspa/cli/commands/manage.py @@ -16,7 +16,7 @@ from pyspa.asgi import app from pyspa.cli.console import console from pyspa.config import settings -from pyspa.db import engine +from pyspa.db import AsyncScopedSession, engine from pyspa.models import BaseModel, meta logger = logging.getLogger() @@ -76,6 +76,7 @@ def generate_random_key(length: int = 32) -> None: default=False, required=False, show_default=False, + is_flag=True, ) def create_user( email: Optional[str], @@ -96,8 +97,8 @@ def create_user( ) async def _create_user(obj_in: schemas.UserSignup) -> None: - async with engine.begin() as db: - user = await services.user.create(db=db, obj_in=obj_in) # type: ignore[arg-type] + async with AsyncScopedSession() as db: + user = await services.user.create(db=db, obj_in=obj_in) console.print(f"User created: {user.email}") utils.asyncer.run(_create_user)(obj_in) @@ -116,15 +117,15 @@ def promote_to_superuser(email: Optional[str]) -> None: email = email or click.prompt("Email") async def _promote_to_superuser(email: EmailStr) -> None: - async with engine.begin() as db: - user = await services.user.get_by_email(db=db, email=email) # type: ignore[arg-type] + async with AsyncScopedSession() as db: + user = await services.user.get_by_email(db=db, email=email) if user: console.print(f"Promoting user: {user.email}") user_in = schemas.UserUpdate( email=user.email, is_superuser=True, ) - user = await services.user.update(db_obj=user, obj_in=user_in, db=db) # type: ignore[arg-type] + user = await services.user.update(db_obj=user, obj_in=user_in, db=db) console.print(f"Upgraded {email} to superuser") else: console.print(f"User not found: {email}") From c71fa97f76bebde5cb9578a748633f891e651592 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 18 Sep 2022 17:37:12 -0500 Subject: [PATCH 036/397] split teams and team invite --- src/pyspa/repositories/__init__.py | 3 ++- src/pyspa/repositories/team.py | 9 --------- src/pyspa/repositories/team_invite.py | 13 +++++++++++++ 3 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 src/pyspa/repositories/team_invite.py diff --git a/src/pyspa/repositories/__init__.py b/src/pyspa/repositories/__init__.py index 6ea50485..94e3473f 100644 --- a/src/pyspa/repositories/__init__.py +++ b/src/pyspa/repositories/__init__.py @@ -1,5 +1,6 @@ from pyspa.repositories.base import BaseRepository -from pyspa.repositories.team import TeamInvitationRepository, TeamRepository, team, team_invite +from pyspa.repositories.team import TeamRepository, team +from pyspa.repositories.team_invite import TeamInvitationRepository, team_invite from pyspa.repositories.upload import UploadRepository, upload from pyspa.repositories.user import UserRepository, user diff --git a/src/pyspa/repositories/team.py b/src/pyspa/repositories/team.py index 79f5f85b..e819c7c7 100644 --- a/src/pyspa/repositories/team.py +++ b/src/pyspa/repositories/team.py @@ -10,13 +10,4 @@ class TeamRepository(BaseRepository[models.Team]): """ -class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): - """_summary_ - - Args: - BaseRepository (_type_): _description_ - """ - - team = TeamRepository(model=models.Team) -team_invite = TeamInvitationRepository(model=models.TeamInvitation) diff --git a/src/pyspa/repositories/team_invite.py b/src/pyspa/repositories/team_invite.py new file mode 100644 index 00000000..642dce6a --- /dev/null +++ b/src/pyspa/repositories/team_invite.py @@ -0,0 +1,13 @@ +from pyspa import models +from pyspa.repositories.base import BaseRepository + + +class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): + """_summary_ + + Args: + BaseRepository (_type_): _description_ + """ + + +team_invite = TeamInvitationRepository(model=models.TeamInvitation) From 20df3af8b519cc04e6238cd759080d376323010e Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 19 Sep 2022 08:05:26 -0500 Subject: [PATCH 037/397] simplify header print --- poetry.lock | 149 ++++++++++++++++++++++++++++++---- src/pyspa/cli/commands/run.py | 2 + src/pyspa/cli/console.py | 5 +- 3 files changed, 137 insertions(+), 19 deletions(-) diff --git a/poetry.lock b/poetry.lock index 66194485..1c9f3785 100644 --- a/poetry.lock +++ b/poetry.lock @@ -121,7 +121,7 @@ tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy [[package]] name = "autoflake" -version = "1.5.3" +version = "1.6.0" description = "Removes unused imports and unused variables" category = "dev" optional = false @@ -129,7 +129,7 @@ python-versions = ">=3.7" [package.dependencies] pyflakes = ">=1.1.0" -toml = ">=0.10.2" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] name = "bandit" @@ -182,6 +182,14 @@ python-versions = ">=3.7" [package.dependencies] black = ">=19.3b0" +[[package]] +name = "Brotli" +version = "1.0.9" +description = "Python bindings for the Brotli compression library" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "bump2version" version = "1.0.1" @@ -373,8 +381,8 @@ gmpy2 = ["gmpy2"] [[package]] name = "email-validator" -version = "1.2.1" -description = "A robust email syntax and deliverability validation library." +version = "1.3.0" +description = "A robust email address syntax and deliverability validation library." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" @@ -670,7 +678,7 @@ socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "hypothesis" -version = "6.54.5" +version = "6.54.6" description = "A library for property-based testing" category = "dev" optional = false @@ -867,7 +875,7 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.5.1" +version = "8.5.2" description = "Documentation that simply works" category = "dev" optional = false @@ -1012,6 +1020,17 @@ category = "dev" optional = false python-versions = ">=2.6" +[[package]] +name = "picologging" +version = "0.8.1" +description = "A fast and lightweight logging library for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +dev = ["black", "pytest", "pytest-cov", "rich"] + [[package]] name = "platformdirs" version = "2.5.2" @@ -1533,7 +1552,9 @@ python-versions = ">=3.7,<4.0" develop = false [package.dependencies] +brotli = {version = "*", optional = true} orjson = "*" +picologging = {version = "*", optional = true} pydantic = "*" pydantic-factories = "*" pydantic-openapi-schema = "*" @@ -1553,7 +1574,7 @@ testing = ["requests"] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "5ed67f651e7ebd4c04d5498f2c6c03f6670dd00f" +resolved_reference = "d3ddab0701ce144ba9beafc0298646b549722e5d" [[package]] name = "starlite-jwt" @@ -1877,7 +1898,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "ebad0d470c5ee02d98586770775a9517cc68ded9451edfec0d39446650b91927" +content-hash = "7e6eae5ac8d9e9ae7eefac5943c9b445fec3e60e74562ba8d08b0d12ccb16fea" [metadata.files] alembic = [ @@ -1960,8 +1981,8 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] autoflake = [ - {file = "autoflake-1.5.3-py2.py3-none-any.whl", hash = "sha256:90eb8d3f625bd72068eb670338ea7efcddbc5c6e822d3601e3dc9404c06ea8da"}, - {file = "autoflake-1.5.3.tar.gz", hash = "sha256:44f7d7eb2c1c49505b513c0e93a5dfd3f7b4218283f50c5ca0af4df6b975d470"}, + {file = "autoflake-1.6.0-py2.py3-none-any.whl", hash = "sha256:d5de7da3786809bbdedbdbdeecbb410d55277b3492a4a3ede882998f1e87f156"}, + {file = "autoflake-1.6.0.tar.gz", hash = "sha256:6d313038abf4ad829cb88c9b01cd16387369ac529842bcd7f25a967ab4e99b8f"}, ] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, @@ -1996,6 +2017,70 @@ blacken-docs = [ {file = "blacken_docs-1.12.1-py2.py3-none-any.whl", hash = "sha256:385eb3db60faddceb218e54e2677821e1dbd441d0473f95cc4b7206a52d5bb62"}, {file = "blacken_docs-1.12.1.tar.gz", hash = "sha256:5fd22ba1f3ab10d7013427019b4e7b83f6f4aca00c898645e0481ce7966b0aa4"}, ] +Brotli = [ + {file = "Brotli-1.0.9-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:268fe94547ba25b58ebc724680609c8ee3e5a843202e9a381f6f9c5e8bdb5c70"}, + {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:c2415d9d082152460f2bd4e382a1e85aed233abc92db5a3880da2257dc7daf7b"}, + {file = "Brotli-1.0.9-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5913a1177fc36e30fcf6dc868ce23b0453952c78c04c266d3149b3d39e1410d6"}, + {file = "Brotli-1.0.9-cp27-cp27m-win32.whl", hash = "sha256:afde17ae04d90fbe53afb628f7f2d4ca022797aa093e809de5c3cf276f61bbfa"}, + {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7cb81373984cc0e4682f31bc3d6be9026006d96eecd07ea49aafb06897746452"}, + {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:db844eb158a87ccab83e868a762ea8024ae27337fc7ddcbfcddd157f841fdfe7"}, + {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9744a863b489c79a73aba014df554b0e7a0fc44ef3f8a0ef2a52919c7d155031"}, + {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a72661af47119a80d82fa583b554095308d6a4c356b2a554fdc2799bc19f2a43"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ee83d3e3a024a9618e5be64648d6d11c37047ac48adff25f12fa4226cf23d1c"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:19598ecddd8a212aedb1ffa15763dd52a388518c4550e615aed88dc3753c0f0c"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44bb8ff420c1d19d91d79d8c3574b8954288bdff0273bf788954064d260d7ab0"}, + {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e23281b9a08ec338469268f98f194658abfb13658ee98e2b7f85ee9dd06caa91"}, + {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3496fc835370da351d37cada4cf744039616a6db7d13c430035e901443a34daa"}, + {file = "Brotli-1.0.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83bb06a0192cccf1eb8d0a28672a1b79c74c3a8a5f2619625aeb6f28b3a82bb"}, + {file = "Brotli-1.0.9-cp310-cp310-win32.whl", hash = "sha256:26d168aac4aaec9a4394221240e8a5436b5634adc3cd1cdf637f6645cecbf181"}, + {file = "Brotli-1.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:622a231b08899c864eb87e85f81c75e7b9ce05b001e59bbfbf43d4a71f5f32b2"}, + {file = "Brotli-1.0.9-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:c83aa123d56f2e060644427a882a36b3c12db93727ad7a7b9efd7d7f3e9cc2c4"}, + {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:6b2ae9f5f67f89aade1fab0f7fd8f2832501311c363a21579d02defa844d9296"}, + {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:68715970f16b6e92c574c30747c95cf8cf62804569647386ff032195dc89a430"}, + {file = "Brotli-1.0.9-cp35-cp35m-win32.whl", hash = "sha256:defed7ea5f218a9f2336301e6fd379f55c655bea65ba2476346340a0ce6f74a1"}, + {file = "Brotli-1.0.9-cp35-cp35m-win_amd64.whl", hash = "sha256:88c63a1b55f352b02c6ffd24b15ead9fc0e8bf781dbe070213039324922a2eea"}, + {file = "Brotli-1.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:503fa6af7da9f4b5780bb7e4cbe0c639b010f12be85d02c99452825dd0feef3f"}, + {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:40d15c79f42e0a2c72892bf407979febd9cf91f36f495ffb333d1d04cebb34e4"}, + {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:93130612b837103e15ac3f9cbacb4613f9e348b58b3aad53721d92e57f96d46a"}, + {file = "Brotli-1.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87fdccbb6bb589095f413b1e05734ba492c962b4a45a13ff3408fa44ffe6479b"}, + {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:6d847b14f7ea89f6ad3c9e3901d1bc4835f6b390a9c71df999b0162d9bb1e20f"}, + {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:495ba7e49c2db22b046a53b469bbecea802efce200dffb69b93dd47397edc9b6"}, + {file = "Brotli-1.0.9-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4688c1e42968ba52e57d8670ad2306fe92e0169c6f3af0089be75bbac0c64a3b"}, + {file = "Brotli-1.0.9-cp36-cp36m-win32.whl", hash = "sha256:61a7ee1f13ab913897dac7da44a73c6d44d48a4adff42a5701e3239791c96e14"}, + {file = "Brotli-1.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:1c48472a6ba3b113452355b9af0a60da5c2ae60477f8feda8346f8fd48e3e87c"}, + {file = "Brotli-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b78a24b5fd13c03ee2b7b86290ed20efdc95da75a3557cc06811764d5ad1126"}, + {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9d12cf2851759b8de8ca5fde36a59c08210a97ffca0eb94c532ce7b17c6a3d1d"}, + {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6c772d6c0a79ac0f414a9f8947cc407e119b8598de7621f39cacadae3cf57d12"}, + {file = "Brotli-1.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29d1d350178e5225397e28ea1b7aca3648fcbab546d20e7475805437bfb0a130"}, + {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7bbff90b63328013e1e8cb50650ae0b9bac54ffb4be6104378490193cd60f85a"}, + {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ec1947eabbaf8e0531e8e899fc1d9876c179fc518989461f5d24e2223395a9e3"}, + {file = "Brotli-1.0.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12effe280b8ebfd389022aa65114e30407540ccb89b177d3fbc9a4f177c4bd5d"}, + {file = "Brotli-1.0.9-cp37-cp37m-win32.whl", hash = "sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1"}, + {file = "Brotli-1.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:97f715cf371b16ac88b8c19da00029804e20e25f30d80203417255d239f228b5"}, + {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e16eb9541f3dd1a3e92b89005e37b1257b157b7256df0e36bd7b33b50be73bcb"}, + {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:160c78292e98d21e73a4cc7f76a234390e516afcd982fa17e1422f7c6a9ce9c8"}, + {file = "Brotli-1.0.9-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b663f1e02de5d0573610756398e44c130add0eb9a3fc912a09665332942a2efb"}, + {file = "Brotli-1.0.9-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5b6ef7d9f9c38292df3690fe3e302b5b530999fa90014853dcd0d6902fb59f26"}, + {file = "Brotli-1.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a674ac10e0a87b683f4fa2b6fa41090edfd686a6524bd8dedbd6138b309175c"}, + {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e2d9e1cbc1b25e22000328702b014227737756f4b5bf5c485ac1d8091ada078b"}, + {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b336c5e9cf03c7be40c47b5fd694c43c9f1358a80ba384a21969e0b4e66a9b17"}, + {file = "Brotli-1.0.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:85f7912459c67eaab2fb854ed2bc1cc25772b300545fe7ed2dc03954da638649"}, + {file = "Brotli-1.0.9-cp38-cp38-win32.whl", hash = "sha256:35a3edbe18e876e596553c4007a087f8bcfd538f19bc116917b3c7522fca0429"}, + {file = "Brotli-1.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:269a5743a393c65db46a7bb982644c67ecba4b8d91b392403ad8a861ba6f495f"}, + {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2aad0e0baa04517741c9bb5b07586c642302e5fb3e75319cb62087bd0995ab19"}, + {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5cb1e18167792d7d21e21365d7650b72d5081ed476123ff7b8cac7f45189c0c7"}, + {file = "Brotli-1.0.9-cp39-cp39-manylinux1_i686.whl", hash = "sha256:16d528a45c2e1909c2798f27f7bf0a3feec1dc9e50948e738b961618e38b6a7b"}, + {file = "Brotli-1.0.9-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:56d027eace784738457437df7331965473f2c0da2c70e1a1f6fdbae5402e0389"}, + {file = "Brotli-1.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bf919756d25e4114ace16a8ce91eb340eb57a08e2c6950c3cebcbe3dff2a5e7"}, + {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e4c4e92c14a57c9bd4cb4be678c25369bf7a092d55fd0866f759e425b9660806"}, + {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e48f4234f2469ed012a98f4b7874e7f7e173c167bed4934912a29e03167cf6b1"}, + {file = "Brotli-1.0.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ed4c92a0665002ff8ea852353aeb60d9141eb04109e88928026d3c8a9e5433c"}, + {file = "Brotli-1.0.9-cp39-cp39-win32.whl", hash = "sha256:cfc391f4429ee0a9370aa93d812a52e1fee0f37a81861f4fdd1f4fb28e8547c3"}, + {file = "Brotli-1.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:854c33dad5ba0fbd6ab69185fec8dab89e13cda6b7d191ba111987df74f38761"}, + {file = "Brotli-1.0.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9749a124280a0ada4187a6cfd1ffd35c350fb3af79c706589d98e088c5044267"}, + {file = "Brotli-1.0.9-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:76ffebb907bec09ff511bb3acc077695e2c32bc2142819491579a695f77ffd4d"}, + {file = "Brotli-1.0.9.zip", hash = "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438"}, +] bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, @@ -2237,8 +2322,8 @@ ecdsa = [ {file = "ecdsa-0.18.0.tar.gz", hash = "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"}, ] email-validator = [ - {file = "email_validator-1.2.1-py2.py3-none-any.whl", hash = "sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c"}, - {file = "email_validator-1.2.1.tar.gz", hash = "sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8"}, + {file = "email_validator-1.3.0-py2.py3-none-any.whl", hash = "sha256:816073f2a7cffef786b29928f58ec16cdac42710a53bb18aa94317e3e145ec5c"}, + {file = "email_validator-1.3.0.tar.gz", hash = "sha256:553a66f8be2ec2dea641ae1d3f29017ab89e9d603d4a25cdaac39eefa283d769"}, ] exceptiongroup = [ {file = "exceptiongroup-1.0.0rc9-py3-none-any.whl", hash = "sha256:2e3c3fc1538a094aab74fad52d6c33fc94de3dfee3ee01f187c0e0c72aec5337"}, @@ -2459,8 +2544,8 @@ httpx = [ {file = "httpx-0.23.0.tar.gz", hash = "sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"}, ] hypothesis = [ - {file = "hypothesis-6.54.5-py3-none-any.whl", hash = "sha256:d8d2e18139be18e5c95593f1e2d87dbcd21534a32022a1db6e8ac2d458ee1d1a"}, - {file = "hypothesis-6.54.5.tar.gz", hash = "sha256:8a9056825695f415bfad4e808ae719fc01383a9ab659775319724365afcc7ec7"}, + {file = "hypothesis-6.54.6-py3-none-any.whl", hash = "sha256:e44833325f9a55f795596ceefd7ede7d626cfe45836025d2647cccaff7070e10"}, + {file = "hypothesis-6.54.6.tar.gz", hash = "sha256:2d5e2d5ccd0efce4e0968a6164f4e4853f808e33f4d91490c975c98beec0c7c3"}, ] identify = [ {file = "identify-2.5.5-py2.py3-none-any.whl", hash = "sha256:ef78c0d96098a3b5fe7720be4a97e73f439af7cf088ebf47b620aeaa10fadf97"}, @@ -2592,8 +2677,8 @@ mkdocs-autorefs = [ {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, ] mkdocs-material = [ - {file = "mkdocs-material-8.5.1.tar.gz", hash = "sha256:2daf604d00d554d5496c02b4c4d14dfa57dd689c90f639da5020601baef4b235"}, - {file = "mkdocs_material-8.5.1-py2.py3-none-any.whl", hash = "sha256:79e9b65e481edb539eda6a3a939a0e02609a5c54afc315c3b05f57ff40db3188"}, + {file = "mkdocs-material-8.5.2.tar.gz", hash = "sha256:16ca1304a93b085e5dfb0dbcc681b74dad1587d8ba727c89c8fd4259dd8fe004"}, + {file = "mkdocs_material-8.5.2-py2.py3-none-any.whl", hash = "sha256:1962099d8c6eb7571896a0e7fdc52ff4fda1e906969d0e42ae3537418e807868"}, ] mkdocs-material-extensions = [ {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, @@ -2700,6 +2785,38 @@ pbr = [ {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] +picologging = [ + {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:262afe4b6189a2c84db8a0b43255ea44288b3a86caa1f2c997fd79b899882c9d"}, + {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:d6f7e80c7036b0d101c61c963089127fe777147d191dcbb6554d17532137fdc0"}, + {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad5edd2f74432c5520b22dcf3dd18f5c99c6319452d326c3e4c2d2a9e77431a"}, + {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6fd92dd034e19fd9f34af5442a4c3d56876427c8efaeb70bbe1fd60e5e45fbf"}, + {file = "picologging-0.8.1-cp310-cp310-win32.whl", hash = "sha256:c17351e6fe9bbd1c646105a88e2b54529c85f756c369d3bb030e07dac2ca31ce"}, + {file = "picologging-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:b7e12162ec7c62bac42c2cfafaee73d787ee3006d37425431bc85eae18324c92"}, + {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f76ab45250ea48a5bd8c8f78dc60b6268deca643f3e4d0880a161f96c39b4901"}, + {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:aa4278eb5dedc6e34004dd8bf1dec30fac36c89c5730ae46b024a0c6b73792df"}, + {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9470c0ed2c5cb1bb46ed3c25b678ff92c3c7a3072c61451879d85442cdb30e26"}, + {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:625626f283c9c5c17baeb32c1722a048d630cce43cbb064baa16ec192b1a485e"}, + {file = "picologging-0.8.1-cp311-cp311-win32.whl", hash = "sha256:07ebb45bcc9e4cf59abf902faf408ccab5217eb6e6c0f270bbc055481f9590de"}, + {file = "picologging-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:05b267a0979b4b6fa21ad33a8e9194b72808653fb4785c6682ec9fa958ab9c02"}, + {file = "picologging-0.8.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:307b5e3a8740e1bfe2872448ca0b0410a159bfba8ddeb46a30d97469801d4703"}, + {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4e48cde8e4302a13fe64869dcbd158a70d49c22f812f19e9e34aaddc4fbf4fa"}, + {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f4bff6ec169fe21faa63576b80219471822541fb8e6072f03e231c97c8489"}, + {file = "picologging-0.8.1-cp37-cp37m-win32.whl", hash = "sha256:392e5823d38531cf6c516ddaaf2d7ffee8640ae5783039401899352048a90a41"}, + {file = "picologging-0.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3b7c3084cbb56a33d20b32ad1f4b7eb1f7bc07f4a737b98c2f374c635a11f0b6"}, + {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:a99f94e5ef0e05123a9dfd56979fcb0ef87ef307e5d6955781a7d5af3aae332d"}, + {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:2ea4226d1dad2ad1a7206b23e1969a9593fe47fbd8e3e74c76d59ebe58c2679e"}, + {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f20a93feedaa4617258215444946a3f7ea768465536eeea2172b4754b4d08bb1"}, + {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b25d97b9d94e78f181319f39f25b34f4907ab420df9f8efafae8432e174c576"}, + {file = "picologging-0.8.1-cp38-cp38-win32.whl", hash = "sha256:04f6cd30441300798b3d20353acba554c51488097b523ff1dff33c689c3e5dde"}, + {file = "picologging-0.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:ea507fd1f7c71e9da9484ab234ea4613979abf994c59602d64640fced81d994f"}, + {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:1c5993c9d219f9c4c6bf8ab9091db4e15d6dfb484cdada7d939ea7902a7b0575"}, + {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:41ff34882e1358a8d6606701394cfceca8b810ce5b289d37229219cacde8bd29"}, + {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf77b97df9f3a2b754f5237ea96c92fa6b4f703c881f9ffad275b7832b4aa7ac"}, + {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74933bf930b60904ef66b7b4b695952ca86442c023dcf9917ea63a124de22fa2"}, + {file = "picologging-0.8.1-cp39-cp39-win32.whl", hash = "sha256:0662cee1a580cbc92c709a703e8be09642c04b1ccd06e22a70af206f571f51c3"}, + {file = "picologging-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:176f2b87e3638b100cde401de64e4886293f3cc2937af805d0b15669561baedb"}, + {file = "picologging-0.8.1.tar.gz", hash = "sha256:c0e263937a7fad3d3ec91c2311356f7ff699f605e960fac3eae409ff5b2f330a"}, +] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, diff --git a/src/pyspa/cli/commands/run.py b/src/pyspa/cli/commands/run.py index 221656cf..e4bc1075 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/pyspa/cli/commands/run.py @@ -3,6 +3,7 @@ from typing import Any, Dict import click +from rich.rule import Rule from pyspa.cli.console import console, print_prologue from pyspa.config import settings @@ -50,6 +51,7 @@ def run_server(host: str, port: int, http_workers: int, reload: bool, verbose: b is_interactive=console.is_interactive, custom_header=_generate_header_info(), ) + console.print(Rule(title="Run Logs")) settings.server.HOST = host settings.server.PORT = port settings.server.HTTP_WORKERS = http_workers diff --git a/src/pyspa/cli/console.py b/src/pyspa/cli/console.py index d2f35bd1..b95229b9 100644 --- a/src/pyspa/cli/console.py +++ b/src/pyspa/cli/console.py @@ -1,6 +1,6 @@ from rich.console import Console from rich.panel import Panel -from rich.rule import Rule +from rich.traceback import install as rich_tracebacks from pyspa.config import settings @@ -12,6 +12,7 @@ color_system="truecolor", stderr=False, ) +rich_tracebacks(console=console) TEXT_LOGO = """ [bold yellow]✨ Starlite """ @@ -20,7 +21,6 @@ def print_prologue( is_interactive: bool, custom_header: str = "", - command_title: str = "Run Logs", ) -> None: """Prints the CLI application header Args: @@ -35,4 +35,3 @@ def print_prologue( if not custom_header: custom_header = f"[bold blue]✨ {settings.app.NAME}" console.print(Panel(custom_header, height=10, width=console.width), overflow="ellipsis") - console.print(Rule(title=command_title)) From b428df2d3b69db340c2603abea495c555020510a Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 24 Sep 2022 13:53:43 -0500 Subject: [PATCH 038/397] updates for latest starlite. correction of return type --- poetry.lock | 115 +++++++++++------------------------- src/pyspa/config/logging.py | 4 +- src/pyspa/middleware/db.py | 7 ++- src/pyspa/services/team.py | 2 +- src/pyspa/services/user.py | 7 ++- 5 files changed, 46 insertions(+), 89 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1c9f3785..8035bae5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -121,7 +121,7 @@ tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy [[package]] name = "autoflake" -version = "1.6.0" +version = "1.6.1" description = "Removes unused imports and unused variables" category = "dev" optional = false @@ -200,7 +200,7 @@ python-versions = ">=3.5" [[package]] name = "certifi" -version = "2022.9.14" +version = "2022.9.24" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -404,7 +404,7 @@ test = ["pytest (>=6)"] [[package]] name = "Faker" -version = "14.2.0" +version = "14.2.1" description = "Faker is a Python package that generates fake data for you." category = "main" optional = false @@ -440,7 +440,7 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "flake8-bugbear" -version = "22.9.11" +version = "22.9.23" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." category = "dev" optional = false @@ -602,7 +602,7 @@ docs = ["Sphinx"] [[package]] name = "griffe" -version = "0.22.1" +version = "0.22.2" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." category = "dev" optional = false @@ -789,7 +789,7 @@ python-versions = ">=3.6" [[package]] name = "Mako" -version = "1.2.2" +version = "1.2.3" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." category = "main" optional = false @@ -875,7 +875,7 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.5.2" +version = "8.5.3" description = "Documentation that simply works" category = "dev" optional = false @@ -1020,17 +1020,6 @@ category = "dev" optional = false python-versions = ">=2.6" -[[package]] -name = "picologging" -version = "0.8.1" -description = "A fast and lightweight logging library for Python" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -dev = ["black", "pytest", "pytest-cov", "rich"] - [[package]] name = "platformdirs" version = "2.5.2" @@ -1167,14 +1156,14 @@ plugins = ["importlib-metadata"] [[package]] name = "pylint" -version = "2.15.2" +version = "2.15.3" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.12.9,<=2.14.0-dev0" +astroid = ">=2.12.10,<=2.14.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1526,7 +1515,7 @@ sqlcipher = ["sqlcipher3_binary"] type = "git" url = "https://github.com/sqlalchemy/sqlalchemy.git" reference = "main" -resolved_reference = "e7700b4a887c449f33bb5aaa8dfb96f4c76f2a54" +resolved_reference = "75ab50869b37368f32ec311dfb59777c0c1d1edb" [[package]] name = "starlette" @@ -1544,7 +1533,7 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "starlite" -version = "1.20.0" +version = "1.21.1" description = "Light-weight and flexible ASGI API Framework" category = "main" optional = false @@ -1554,7 +1543,6 @@ develop = false [package.dependencies] brotli = {version = "*", optional = true} orjson = "*" -picologging = {version = "*", optional = true} pydantic = "*" pydantic-factories = "*" pydantic-openapi-schema = "*" @@ -1566,15 +1554,14 @@ typing-extensions = "*" [package.extras] brotli = ["brotli"] cryptography = ["cryptography"] -full = ["brotli", "cryptography", "picologging", "requests"] -picologging = ["picologging"] +full = ["brotli", "cryptography", "requests"] testing = ["requests"] [package.source] type = "git" url = "https://github.com/starlite-api/starlite.git" reference = "main" -resolved_reference = "d3ddab0701ce144ba9beafc0298646b549722e5d" +resolved_reference = "029685ffb02cef8ab7d75c840b393741e2175c2b" [[package]] name = "starlite-jwt" @@ -1733,7 +1720,7 @@ python-versions = "*" [[package]] name = "types-requests" -version = "2.28.10" +version = "2.28.11" description = "Typing stubs for requests" category = "dev" optional = false @@ -1760,7 +1747,7 @@ python-versions = ">=3.7" [[package]] name = "universal-pathlib" -version = "0.0.20" +version = "0.0.21" description = "Pathlib API extended to use fsspec backends" category = "main" optional = false @@ -1981,8 +1968,8 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] autoflake = [ - {file = "autoflake-1.6.0-py2.py3-none-any.whl", hash = "sha256:d5de7da3786809bbdedbdbdeecbb410d55277b3492a4a3ede882998f1e87f156"}, - {file = "autoflake-1.6.0.tar.gz", hash = "sha256:6d313038abf4ad829cb88c9b01cd16387369ac529842bcd7f25a967ab4e99b8f"}, + {file = "autoflake-1.6.1-py2.py3-none-any.whl", hash = "sha256:dfef4c851fb07e6111f9115d3e7c8c52d8564cbf71c12ade2d8b8a2a7b8bd176"}, + {file = "autoflake-1.6.1.tar.gz", hash = "sha256:72bce741144ef6db26005d47dba242c1fd6a91ea53f7f4c5a90ad4b051e394c2"}, ] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, @@ -2086,8 +2073,8 @@ bump2version = [ {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] certifi = [ - {file = "certifi-2022.9.14-py3-none-any.whl", hash = "sha256:e232343de1ab72c2aa521b625c80f699e356830fd0e2c620b465b304b17b0516"}, - {file = "certifi-2022.9.14.tar.gz", hash = "sha256:36973885b9542e6bd01dea287b2b4b3b21236307c56324fcc3f1160f2d655ed5"}, + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, ] cffi = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, @@ -2330,8 +2317,8 @@ exceptiongroup = [ {file = "exceptiongroup-1.0.0rc9.tar.gz", hash = "sha256:9086a4a21ef9b31c72181c77c040a074ba0889ee56a7b289ff0afb0d97655f96"}, ] Faker = [ - {file = "Faker-14.2.0-py3-none-any.whl", hash = "sha256:e02c55a5b0586caaf913cc6c254b3de178e08b031c5922e590fd033ebbdbfd02"}, - {file = "Faker-14.2.0.tar.gz", hash = "sha256:6db56e2c43a2b74250d1c332ef25fef7dc07dcb6c5fab5329dd7b4467b8ed7b9"}, + {file = "Faker-14.2.1-py3-none-any.whl", hash = "sha256:2e28aaea60456857d4ce95dd12aed767769537ad23d13d51a545cd40a654e9d9"}, + {file = "Faker-14.2.1.tar.gz", hash = "sha256:daad7badb4fd916bd047b28c8459ef4689e4fe6acf61f6dfebee8cc602e4d009"}, ] filelock = [ {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, @@ -2342,8 +2329,8 @@ flake8 = [ {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] flake8-bugbear = [ - {file = "flake8-bugbear-22.9.11.tar.gz", hash = "sha256:39236c0e97160d1ab05d9f87422173d16e925a6220b3635bfc4aee766bf8194a"}, - {file = "flake8_bugbear-22.9.11-py3-none-any.whl", hash = "sha256:e74350a4cfc670e184f3433c223b1e7378f1cf8345ded6c8f12ac1a50c5df22b"}, + {file = "flake8-bugbear-22.9.23.tar.gz", hash = "sha256:17b9623325e6e0dcdcc80ed9e4aa811287fcc81d7e03313b8736ea5733759937"}, + {file = "flake8_bugbear-22.9.23-py3-none-any.whl", hash = "sha256:cd2779b2b7ada212d7a322814a1e5651f1868ab0d3f24cc9da66169ab8fda474"}, ] flake8-comprehensions = [ {file = "flake8-comprehensions-3.10.0.tar.gz", hash = "sha256:181158f7e7aa26a63a0a38e6017cef28c6adee71278ce56ce11f6ec9c4905058"}, @@ -2442,8 +2429,8 @@ greenlet = [ {file = "greenlet-1.1.3.tar.gz", hash = "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455"}, ] griffe = [ - {file = "griffe-0.22.1-py3-none-any.whl", hash = "sha256:60b7906db5460277afdba17808ade1c9e099b20a6b8d8d1d152714daaa463cb7"}, - {file = "griffe-0.22.1.tar.gz", hash = "sha256:0130019b0b3966e9d755d9acb82fe9b64e354064ce971306e5892c098bf1a5c7"}, + {file = "griffe-0.22.2-py3-none-any.whl", hash = "sha256:cea5415ac6a92f4a22638e3f1f2e661402bac09fb8e8266936d67185a7e0d0fb"}, + {file = "griffe-0.22.2.tar.gz", hash = "sha256:1408e336a4155392bbd81eed9f2f44bf144e71b9c664e905630affe83bbc088e"}, ] h11 = [ {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, @@ -2611,8 +2598,8 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] Mako = [ - {file = "Mako-1.2.2-py3-none-any.whl", hash = "sha256:8efcb8004681b5f71d09c983ad5a9e6f5c40601a6ec469148753292abc0da534"}, - {file = "Mako-1.2.2.tar.gz", hash = "sha256:3724869b363ba630a272a5f89f68c070352137b8fd1757650017b7e06fda163f"}, + {file = "Mako-1.2.3-py3-none-any.whl", hash = "sha256:c413a086e38cd885088d5e165305ee8eed04e8b3f8f62df343480da0a385735f"}, + {file = "Mako-1.2.3.tar.gz", hash = "sha256:7fde96466fcfeedb0eed94f187f20b23d85e4cb41444be0e542e2c8c65c396cd"}, ] Markdown = [ {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, @@ -2677,8 +2664,8 @@ mkdocs-autorefs = [ {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, ] mkdocs-material = [ - {file = "mkdocs-material-8.5.2.tar.gz", hash = "sha256:16ca1304a93b085e5dfb0dbcc681b74dad1587d8ba727c89c8fd4259dd8fe004"}, - {file = "mkdocs_material-8.5.2-py2.py3-none-any.whl", hash = "sha256:1962099d8c6eb7571896a0e7fdc52ff4fda1e906969d0e42ae3537418e807868"}, + {file = "mkdocs_material-8.5.3-py3-none-any.whl", hash = "sha256:d194c38041d1e83560221022b3f85eec4604b35e44f5c3a488c24b88542074ed"}, + {file = "mkdocs_material-8.5.3.tar.gz", hash = "sha256:43b0aa707d6f9acd836024cab2dce9330957c94a4e1e41c23ee6c8ce67b4d8c5"}, ] mkdocs-material-extensions = [ {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, @@ -2785,38 +2772,6 @@ pbr = [ {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] -picologging = [ - {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:262afe4b6189a2c84db8a0b43255ea44288b3a86caa1f2c997fd79b899882c9d"}, - {file = "picologging-0.8.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:d6f7e80c7036b0d101c61c963089127fe777147d191dcbb6554d17532137fdc0"}, - {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad5edd2f74432c5520b22dcf3dd18f5c99c6319452d326c3e4c2d2a9e77431a"}, - {file = "picologging-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6fd92dd034e19fd9f34af5442a4c3d56876427c8efaeb70bbe1fd60e5e45fbf"}, - {file = "picologging-0.8.1-cp310-cp310-win32.whl", hash = "sha256:c17351e6fe9bbd1c646105a88e2b54529c85f756c369d3bb030e07dac2ca31ce"}, - {file = "picologging-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:b7e12162ec7c62bac42c2cfafaee73d787ee3006d37425431bc85eae18324c92"}, - {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f76ab45250ea48a5bd8c8f78dc60b6268deca643f3e4d0880a161f96c39b4901"}, - {file = "picologging-0.8.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:aa4278eb5dedc6e34004dd8bf1dec30fac36c89c5730ae46b024a0c6b73792df"}, - {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9470c0ed2c5cb1bb46ed3c25b678ff92c3c7a3072c61451879d85442cdb30e26"}, - {file = "picologging-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:625626f283c9c5c17baeb32c1722a048d630cce43cbb064baa16ec192b1a485e"}, - {file = "picologging-0.8.1-cp311-cp311-win32.whl", hash = "sha256:07ebb45bcc9e4cf59abf902faf408ccab5217eb6e6c0f270bbc055481f9590de"}, - {file = "picologging-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:05b267a0979b4b6fa21ad33a8e9194b72808653fb4785c6682ec9fa958ab9c02"}, - {file = "picologging-0.8.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:307b5e3a8740e1bfe2872448ca0b0410a159bfba8ddeb46a30d97469801d4703"}, - {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4e48cde8e4302a13fe64869dcbd158a70d49c22f812f19e9e34aaddc4fbf4fa"}, - {file = "picologging-0.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f4bff6ec169fe21faa63576b80219471822541fb8e6072f03e231c97c8489"}, - {file = "picologging-0.8.1-cp37-cp37m-win32.whl", hash = "sha256:392e5823d38531cf6c516ddaaf2d7ffee8640ae5783039401899352048a90a41"}, - {file = "picologging-0.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3b7c3084cbb56a33d20b32ad1f4b7eb1f7bc07f4a737b98c2f374c635a11f0b6"}, - {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:a99f94e5ef0e05123a9dfd56979fcb0ef87ef307e5d6955781a7d5af3aae332d"}, - {file = "picologging-0.8.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:2ea4226d1dad2ad1a7206b23e1969a9593fe47fbd8e3e74c76d59ebe58c2679e"}, - {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f20a93feedaa4617258215444946a3f7ea768465536eeea2172b4754b4d08bb1"}, - {file = "picologging-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b25d97b9d94e78f181319f39f25b34f4907ab420df9f8efafae8432e174c576"}, - {file = "picologging-0.8.1-cp38-cp38-win32.whl", hash = "sha256:04f6cd30441300798b3d20353acba554c51488097b523ff1dff33c689c3e5dde"}, - {file = "picologging-0.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:ea507fd1f7c71e9da9484ab234ea4613979abf994c59602d64640fced81d994f"}, - {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:1c5993c9d219f9c4c6bf8ab9091db4e15d6dfb484cdada7d939ea7902a7b0575"}, - {file = "picologging-0.8.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:41ff34882e1358a8d6606701394cfceca8b810ce5b289d37229219cacde8bd29"}, - {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf77b97df9f3a2b754f5237ea96c92fa6b4f703c881f9ffad275b7832b4aa7ac"}, - {file = "picologging-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74933bf930b60904ef66b7b4b695952ca86442c023dcf9917ea63a124de22fa2"}, - {file = "picologging-0.8.1-cp39-cp39-win32.whl", hash = "sha256:0662cee1a580cbc92c709a703e8be09642c04b1ccd06e22a70af206f571f51c3"}, - {file = "picologging-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:176f2b87e3638b100cde401de64e4886293f3cc2937af805d0b15669561baedb"}, - {file = "picologging-0.8.1.tar.gz", hash = "sha256:c0e263937a7fad3d3ec91c2311356f7ff699f605e960fac3eae409ff5b2f330a"}, -] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -2911,8 +2866,8 @@ Pygments = [ {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, ] pylint = [ - {file = "pylint-2.15.2-py3-none-any.whl", hash = "sha256:cc3da458ba810c49d330e09013dec7ced5217772dec8f043ccdd34dae648fde8"}, - {file = "pylint-2.15.2.tar.gz", hash = "sha256:f63404a2547edb5247da263748771ac9a806ed1de4174cda01293c08ddbc2999"}, + {file = "pylint-2.15.3-py3-none-any.whl", hash = "sha256:7f6aad1d8d50807f7bc64f89ac75256a9baf8e6ed491cc9bc65592bc3f462cf1"}, + {file = "pylint-2.15.3.tar.gz", hash = "sha256:5fdfd44af182866999e6123139d265334267339f29961f00c89783155eacc60b"}, ] pymdown-extensions = [ {file = "pymdown_extensions-9.5-py3-none-any.whl", hash = "sha256:ec141c0f4983755349f0c8710416348d1a13753976c028186ed14f190c8061c4"}, @@ -3105,8 +3060,8 @@ types-redis = [ {file = "types_redis-4.3.20-py3-none-any.whl", hash = "sha256:b22e0f5a18b98b6a197dd403daed52a22cb76f50e3cbd7ddc539196af52ec23e"}, ] types-requests = [ - {file = "types-requests-2.28.10.tar.gz", hash = "sha256:97d8f40aa1ffe1e58c3726c77d63c182daea9a72d9f1fa2cafdea756b2a19f2c"}, - {file = "types_requests-2.28.10-py3-none-any.whl", hash = "sha256:45b485725ed58752f2b23461252f1c1ad9205b884a1e35f786bb295525a3e16a"}, + {file = "types-requests-2.28.11.tar.gz", hash = "sha256:7ee827eb8ce611b02b5117cfec5da6455365b6a575f5e3ff19f655ba603e6b4e"}, + {file = "types_requests-2.28.11-py3-none-any.whl", hash = "sha256:af5f55e803cabcfb836dad752bd6d8a0fc8ef1cd84243061c0e27dee04ccf4fd"}, ] types-urllib3 = [ {file = "types-urllib3-1.26.24.tar.gz", hash = "sha256:a1b3aaea7dda3eb1b51699ee723aadd235488e4dc4648e030f09bc429ecff42f"}, @@ -3117,8 +3072,8 @@ typing-extensions = [ {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] universal-pathlib = [ - {file = "universal_pathlib-0.0.20-py3-none-any.whl", hash = "sha256:237116502c87353b40ea1888af6019ce7c690ccb203d9c0f95454c5effd9e47d"}, - {file = "universal_pathlib-0.0.20.tar.gz", hash = "sha256:fedfe8dea248b1556f3e4676be3c5afa3519a03d22ff47d196b021fc84d50585"}, + {file = "universal_pathlib-0.0.21-py3-none-any.whl", hash = "sha256:3ffba2574999ca6aca8c9f4f224499c6571c92cee612cd923a9e909bf23f586b"}, + {file = "universal_pathlib-0.0.21.tar.gz", hash = "sha256:ed18290f2ded33481a754aac3da94fb6bf78f628027b10c3e95ceb6075415e69"}, ] urllib3 = [ {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, diff --git a/src/pyspa/config/logging.py b/src/pyspa/config/logging.py index 83aab15b..df2b1c72 100644 --- a/src/pyspa/config/logging.py +++ b/src/pyspa/config/logging.py @@ -51,7 +51,7 @@ def filter(self, record: logging.LogRecord) -> bool: "omit_repeated_times": False, }, "queue_listener": { - "class": "starlite.QueueListenerHandler", + "class": "starlite.logging.standard.QueueListenerHandler", "handlers": ["cfg://handlers.console"], }, }, @@ -62,7 +62,7 @@ def filter(self, record: logging.LogRecord) -> bool: "uvicorn.access": { "propagate": False, "filters": ["health_filter"], - "level": settings.server.UVICORN_LOG_LEVEL.upper(), + "level": "INFO", "handlers": ["queue_listener"], }, "uvicorn.error": { diff --git a/src/pyspa/middleware/db.py b/src/pyspa/middleware/db.py index 33c68012..d204b049 100644 --- a/src/pyspa/middleware/db.py +++ b/src/pyspa/middleware/db.py @@ -1,12 +1,13 @@ import logging from typing import TYPE_CHECKING +from starlite import ScopeType from starlite.middleware import MiddlewareProtocol from pyspa.db import AsyncScopedSession if TYPE_CHECKING: - from starlette.types import ASGIApp, Message, Receive, Scope, Send + from starlite.types import ASGIApp, Message, Receive, Scope, Send __all__ = ["DatabaseSessionMiddleware"] @@ -21,7 +22,7 @@ def __init__(self, app: "ASGIApp") -> None: @staticmethod async def _manage_session(message: "Message") -> None: logger.debug("_manage_session() called: %s", message) - if 200 <= message["status"] < 300: + if 200 <= message["status"] < 300: # type: ignore[typeddict-item] await AsyncScopedSession.commit() logger.debug("session committed") else: @@ -31,7 +32,7 @@ async def _manage_session(message: "Message") -> None: logger.debug("database session removed") async def __call__(self, scope: "Scope", receive: "Receive", send: "Send") -> None: - if scope["type"] == "http": + if scope["type"] == ScopeType.HTTP: async def send_wrapper(message: "Message") -> None: if message["type"] == "http.response.start": diff --git a/src/pyspa/services/team.py b/src/pyspa/services/team.py index 355dfad9..6ee7cf9c 100644 --- a/src/pyspa/services/team.py +++ b/src/pyspa/services/team.py @@ -27,7 +27,7 @@ async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models async def get_teams_for_user( self, db: "AsyncSession", user_id: "UUID4", options: Optional[List[Any]] = None - ) -> List[schemas.Team]: + ) -> List[models.Team]: """Get all workspaces for a user""" options = options if options else self.default_options statement = ( diff --git a/src/pyspa/services/user.py b/src/pyspa/services/user.py index c659e895..3b9c2929 100644 --- a/src/pyspa/services/user.py +++ b/src/pyspa/services/user.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING, Any, Optional from sqlalchemy import orm, select +from starlite import NotAuthorizedException from pyspa import models, repositories, schemas from pyspa.core import security @@ -56,11 +57,11 @@ async def authenticate(self, db: "AsyncSession", username: str, password: "Secre """ user_obj = await self.get_by_email(db, email=username) if user_obj is None: - raise UserNotFoundException + raise NotAuthorizedException("User not found or password invalid") if not await security.verify_password(password, user_obj.hashed_password): - raise UserLoginFailedException + raise NotAuthorizedException("User not found or password invalid") if not user_obj.is_active: - raise UserInactiveException + raise NotAuthorizedException("User account is inactive") return user_obj async def update_password( From 5c18be863cf8ed6c8020b95fb7799eb3a286c103 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 24 Sep 2022 16:08:16 -0500 Subject: [PATCH 039/397] add lit shill app + renamed to generic "app" --- .bumpversion.cfg | 2 +- .eslintrc | 6 + .flake8 | 2 +- .pylintrc | 2 +- Dockerfile | 2 +- Makefile | 12 +- docker-compose.yml | 2 +- docs/app_reference/app.md | 2 +- docs/code_reference/cli.md | 2 +- docs/code_reference/config.md | 2 +- docs/developer_guide/commands.md | 2 +- docs/developer_guide/developer_setup.md | 6 +- docs/extras/file_tree.md | 2 +- docs/user_guide/installation.md | 2 +- mypy.ini | 4 +- package-lock.json | 16541 ++++++++++++++++ package.json | 38 +- postcss.config.js | 6 + pyproject.toml | 8 +- sonar-project.properties | 4 +- src/{pyspa => app}/__init__.py | 4 +- src/{pyspa => app}/__main__.py | 4 +- src/{pyspa => app}/api/__init__.py | 2 +- src/{pyspa => app}/api/routes/__init__.py | 2 +- src/{pyspa => app}/api/routes/access.py | 0 src/{pyspa => app}/api/routes/collection.py | 4 +- src/{pyspa => app}/api/routes/health.py | 12 +- src/{pyspa => app}/api/routes/user.py | 4 +- src/{pyspa => app}/asgi.py | 6 +- src/app/cli/__init__.py | 5 + src/{pyspa => app}/cli/app.py | 4 +- src/app/cli/commands/__init__.py | 3 + src/{pyspa => app}/cli/commands/manage.py | 12 +- src/{pyspa => app}/cli/commands/run.py | 6 +- src/{pyspa => app}/cli/console.py | 2 +- src/app/config/__init__.py | 5 + src/{pyspa => app}/config/alembic.ini | 2 +- src/{pyspa => app}/config/application.py | 10 +- src/{pyspa => app}/config/logging.py | 4 +- src/{pyspa => app}/config/paths.py | 4 +- src/{pyspa => app}/core/__init__.py | 2 +- src/{pyspa => app}/core/cache.py | 2 +- src/{pyspa => app}/core/client/__init__.py | 0 src/{pyspa => app}/core/client/client.py | 0 src/{pyspa => app}/core/client/endpoint.py | 0 src/{pyspa => app}/core/compression.py | 0 src/{pyspa => app}/core/cors.py | 0 src/{pyspa => app}/core/csrf.py | 2 +- src/{pyspa => app}/core/exceptions.py | 0 src/{pyspa => app}/core/guards.py | 2 +- src/{pyspa => app}/core/handlers.py | 2 +- src/{pyspa => app}/core/openapi.py | 4 +- src/{pyspa => app}/core/response.py | 0 src/{pyspa => app}/core/security.py | 15 +- src/{pyspa => app}/core/static_files.py | 2 +- src/{pyspa => app}/db/__init__.py | 4 +- src/{pyspa => app}/db/db_types.py | 0 src/{pyspa => app}/db/engine.py | 6 +- src/{pyspa => app}/db/migrations/README | 0 src/{pyspa => app}/db/migrations/env.py | 4 +- .../db/migrations/script.py.mako | 2 +- .../db/migrations/versions/.gitkeep | 0 .../versions/2022-09-15_e5c9c377ddce.py | 206 + src/app/middleware/__init__.py | 4 + src/{pyspa => app}/middleware/db.py | 2 +- src/{pyspa => app}/middleware/jwt.py | 0 src/app/models/__init__.py | 7 + src/{pyspa => app}/models/base.py | 12 +- src/{pyspa => app}/models/team.py | 4 +- src/{pyspa => app}/models/upload.py | 2 +- src/{pyspa => app}/models/user.py | 4 +- src/{pyspa => app}/py.typed | 0 src/app/repositories/__init__.py | 18 + src/{pyspa => app}/repositories/base.py | 18 +- src/{pyspa => app}/repositories/team.py | 8 +- .../repositories/team_invite.py | 8 +- src/{pyspa => app}/repositories/upload.py | 8 +- src/{pyspa => app}/repositories/user.py | 7 +- src/{pyspa => app}/schemas/__init__.py | 14 +- src/{pyspa => app}/schemas/base.py | 2 +- src/{pyspa => app}/schemas/health.py | 4 +- src/{pyspa => app}/schemas/message.py | 2 +- src/{pyspa => app}/schemas/team.py | 8 +- src/{pyspa => app}/schemas/team_invite.py | 4 +- src/{pyspa => app}/schemas/upload.py | 2 +- src/{pyspa => app}/schemas/user.py | 4 +- src/app/services/__init__.py | 5 + src/{pyspa => app}/services/base.py | 86 +- src/{pyspa => app}/services/health.py | 0 src/{pyspa => app}/services/team.py | 4 +- src/{pyspa => app}/services/team_invite.py | 4 +- src/{pyspa => app}/services/user.py | 20 +- src/app/utils/__init__.py | 3 + src/{pyspa => app}/utils/asyncer.py | 0 src/{pyspa => app}/utils/db/__init__.py | 0 src/{pyspa => app}/utils/db/db_ready.py | 0 src/{pyspa => app}/utils/module_loading.py | 2 +- src/{pyspa => app}/utils/serializers.py | 0 src/{pyspa => app}/utils/text/__init__.py | 0 src/{pyspa => app}/utils/text/slugify.py | 0 src/{pyspa => app}/version.py | 0 src/{pyspa => app}/web/__init__.py | 0 src/{pyspa => app}/web/assets/.gitkeep | 0 src/{pyspa => app}/web/public/.gitkeep | 0 src/app/web/ts/common/TwLitElement.ts | 5 + src/app/web/ts/components/HelloWorld.ts | 11 + src/{pyspa => app}/web/ts/index.html | 0 src/app/web/ts/pages/IndexPage.ts | 18 + src/app/web/ts/styles/tailwind.global.css | 9 + .../web/ts/styles/tailwind.global.css.d.ts | 2 + src/app/web/ts/util/TailwindMixin.ts | 19 + src/pyspa/cli/__init__.py | 5 - src/pyspa/cli/commands/__init__.py | 3 - src/pyspa/config/__init__.py | 5 - .../versions/2022-09-15_e5c9c377ddce.py | 146 - src/pyspa/middleware/__init__.py | 4 - src/pyspa/models/__init__.py | 7 - src/pyspa/repositories/__init__.py | 18 - src/pyspa/services/__init__.py | 5 - src/pyspa/utils/__init__.py | 3 - tsconfig.node.json | 33 +- yarn.lock | 5065 +++++ 122 files changed, 22217 insertions(+), 402 deletions(-) create mode 100644 .eslintrc create mode 100644 package-lock.json create mode 100644 postcss.config.js rename src/{pyspa => app}/__init__.py (66%) rename src/{pyspa => app}/__main__.py (85%) rename src/{pyspa => app}/api/__init__.py (89%) rename src/{pyspa => app}/api/routes/__init__.py (88%) rename src/{pyspa => app}/api/routes/access.py (100%) rename src/{pyspa => app}/api/routes/collection.py (93%) rename src/{pyspa => app}/api/routes/health.py (84%) rename src/{pyspa => app}/api/routes/user.py (94%) rename src/{pyspa => app}/asgi.py (80%) create mode 100644 src/app/cli/__init__.py rename src/{pyspa => app}/cli/app.py (84%) create mode 100644 src/app/cli/commands/__init__.py rename src/{pyspa => app}/cli/commands/manage.py (97%) rename src/{pyspa => app}/cli/commands/run.py (95%) rename src/{pyspa => app}/cli/console.py (96%) create mode 100644 src/app/config/__init__.py rename src/{pyspa => app}/config/alembic.ini (97%) rename src/{pyspa => app}/config/application.py (96%) rename src/{pyspa => app}/config/logging.py (96%) rename src/{pyspa => app}/config/paths.py (81%) rename src/{pyspa => app}/core/__init__.py (92%) rename src/{pyspa => app}/core/cache.py (99%) rename src/{pyspa => app}/core/client/__init__.py (100%) rename src/{pyspa => app}/core/client/client.py (100%) rename src/{pyspa => app}/core/client/endpoint.py (100%) rename src/{pyspa => app}/core/compression.py (100%) rename src/{pyspa => app}/core/cors.py (100%) rename src/{pyspa => app}/core/csrf.py (89%) rename src/{pyspa => app}/core/exceptions.py (100%) rename src/{pyspa => app}/core/guards.py (99%) rename src/{pyspa => app}/core/handlers.py (92%) rename src/{pyspa => app}/core/openapi.py (94%) rename src/{pyspa => app}/core/response.py (100%) rename src/{pyspa => app}/core/security.py (83%) rename src/{pyspa => app}/core/static_files.py (84%) rename src/{pyspa => app}/db/__init__.py (88%) rename src/{pyspa => app}/db/db_types.py (100%) rename src/{pyspa => app}/db/engine.py (94%) rename src/{pyspa => app}/db/migrations/README (100%) rename src/{pyspa => app}/db/migrations/env.py (97%) rename src/{pyspa => app}/db/migrations/script.py.mako (89%) rename src/{pyspa => app}/db/migrations/versions/.gitkeep (100%) create mode 100644 src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py create mode 100644 src/app/middleware/__init__.py rename src/{pyspa => app}/middleware/db.py (97%) rename src/{pyspa => app}/middleware/jwt.py (100%) create mode 100644 src/app/models/__init__.py rename src/{pyspa => app}/models/base.py (93%) rename src/{pyspa => app}/models/team.py (96%) rename src/{pyspa => app}/models/upload.py (93%) rename src/{pyspa => app}/models/user.py (92%) rename src/{pyspa => app}/py.typed (100%) create mode 100644 src/app/repositories/__init__.py rename src/{pyspa => app}/repositories/base.py (96%) rename src/{pyspa => app}/repositories/team.py (52%) rename src/{pyspa => app}/repositories/team_invite.py (50%) rename src/{pyspa => app}/repositories/upload.py (51%) rename src/{pyspa => app}/repositories/user.py (52%) rename src/{pyspa => app}/schemas/__init__.py (57%) rename src/{pyspa => app}/schemas/base.py (97%) rename src/{pyspa => app}/schemas/health.py (81%) rename src/{pyspa => app}/schemas/message.py (51%) rename src/{pyspa => app}/schemas/team.py (92%) rename src/{pyspa => app}/schemas/team_invite.py (90%) rename src/{pyspa => app}/schemas/upload.py (91%) rename src/{pyspa => app}/schemas/user.py (97%) create mode 100644 src/app/services/__init__.py rename src/{pyspa => app}/services/base.py (77%) rename src/{pyspa => app}/services/health.py (100%) rename src/{pyspa => app}/services/team.py (94%) rename src/{pyspa => app}/services/team_invite.py (87%) rename src/{pyspa => app}/services/user.py (93%) create mode 100644 src/app/utils/__init__.py rename src/{pyspa => app}/utils/asyncer.py (100%) rename src/{pyspa => app}/utils/db/__init__.py (100%) rename src/{pyspa => app}/utils/db/db_ready.py (100%) rename src/{pyspa => app}/utils/module_loading.py (97%) rename src/{pyspa => app}/utils/serializers.py (100%) rename src/{pyspa => app}/utils/text/__init__.py (100%) rename src/{pyspa => app}/utils/text/slugify.py (100%) rename src/{pyspa => app}/version.py (100%) rename src/{pyspa => app}/web/__init__.py (100%) rename src/{pyspa => app}/web/assets/.gitkeep (100%) rename src/{pyspa => app}/web/public/.gitkeep (100%) create mode 100644 src/app/web/ts/common/TwLitElement.ts create mode 100644 src/app/web/ts/components/HelloWorld.ts rename src/{pyspa => app}/web/ts/index.html (100%) create mode 100644 src/app/web/ts/pages/IndexPage.ts create mode 100644 src/app/web/ts/styles/tailwind.global.css create mode 100644 src/app/web/ts/styles/tailwind.global.css.d.ts create mode 100644 src/app/web/ts/util/TailwindMixin.ts delete mode 100644 src/pyspa/cli/__init__.py delete mode 100644 src/pyspa/cli/commands/__init__.py delete mode 100644 src/pyspa/config/__init__.py delete mode 100644 src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py delete mode 100644 src/pyspa/middleware/__init__.py delete mode 100644 src/pyspa/models/__init__.py delete mode 100644 src/pyspa/repositories/__init__.py delete mode 100644 src/pyspa/services/__init__.py delete mode 100644 src/pyspa/utils/__init__.py create mode 100644 yarn.lock diff --git a/.bumpversion.cfg b/.bumpversion.cfg index a0abf26d..6a84347c 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -7,6 +7,6 @@ tag = True search = version = "{current_version}" replace = version = "{new_version}" -[bumpversion:file:src/pyspa/version/__version__.py] +[bumpversion:file:src/app/version/__version__.py] search = __version__ = "{current_version}" replace = __version__ = "{new_version}" diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..4a119fca --- /dev/null +++ b/.eslintrc @@ -0,0 +1,6 @@ +{ + "extends": ["galex", "plugin:wc/recommended", "plugin:lit/recommended"], + "rules": { + "@typescript-eslint/explicit-member-accessibility": "off" + } +} diff --git a/.flake8 b/.flake8 index 61686273..027a5c05 100644 --- a/.flake8 +++ b/.flake8 @@ -9,7 +9,7 @@ ignore = D203,E203, E501, C408, B008, B009, W503, SIM119, C417, B023 per-file-ignores = # imported but unused __init__.py: F401 - src/pyspa/db/migrations/versions/*.py: W291 + src/app/db/migrations/versions/*.py: W291 type-checking-pydantic-enabled = true type-checking-fastapi-enabled = true classmethod-decorators = diff --git a/.pylintrc b/.pylintrc index 43a264f3..e967282f 100644 --- a/.pylintrc +++ b/.pylintrc @@ -8,7 +8,7 @@ [MASTER] # Files or directories to be skipped. They should be base names, not paths. -ignore=third_party,pyspa.db.migrations +ignore=third_party,app.db.migrations # Files or directories matching the regex patterns are skipped. The regex # matches against base names, not paths. diff --git a/Dockerfile b/Dockerfile index 392d6bd8..c516124e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,7 +71,7 @@ COPY alembic.ini ./ COPY scripts ./scripts/ COPY alembic ./alembic/ # These are the two folders that change the most. -COPY pyspa /app/ +COPY app /app/ COPY --from=git /version /app/.version # switch to a non-root user for security diff --git a/Makefile b/Makefile index 86db8554..0b3ec596 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ test-all: ## run tests on every Python version with tox env PYTHONPATH=src poetry run tox coverage: ## check code coverage quickly with the default Python - env PYTHONPATH=src/ poetry run coverage run --source pyspa -m pytest + env PYTHONPATH=src/ poetry run coverage run --source app -m pytest env PYTHONPATH=src/ poetry run coverage report -m @@ -69,20 +69,20 @@ install: ## Install the project in dev mode. migrations: ## Generate database migrations @echo "ATTENTION: This operation will create a new database migration for any defined models changes." @while [ -z "$$MIGRATION_MESSAGE" ]; do read -r -p "Migration message: " MIGRATION_MESSAGE; done ; - @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" + @env PYTHONPATH=src poetry run alembic -c src/app/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" .PHONY: migrate migrate: ## Generate database migrations @echo "ATTENTION: Will apply all database migrations." - @env PYTHONPATH=src poetry run pyspa manage upgrade-database + @env PYTHONPATH=src poetry run app manage upgrade-database .PHONY: squash-migrations squash-migrations: ## Generate database migrations @echo "ATTENTION: This operation will wipe all migrations and recreate from an emtpy state." - @env PYTHONPATH=src poetry run pyspa manage purge-database --no-prompt - rm -Rf src/pyspa/db/migrations/versions/*.py + @env PYTHONPATH=src poetry run app manage purge-database --no-prompt + rm -Rf src/app/db/migrations/versions/*.py @while [ -z "$$MIGRATION_MESSAGE" ]; do read -r -p "Intial migration message: " MIGRATION_MESSAGE; done ; - @env PYTHONPATH=src poetry run alembic -c src/pyspa/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" + @env PYTHONPATH=src poetry run alembic -c src/app/config/alembic.ini revision --autogenerate -m "$${MIGRATION_MESSAGE}" .PHONY: clean clean: ## remove all build, testing, and static documentation files diff --git a/docker-compose.yml b/docker-compose.yml index 2273715d..d351354b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,7 @@ services: env_file: - .env volumes: - - ./src/pyspa:/workspace/pyspa + - ./src/app:/workspace/app # - ./scripts:/code/scripts - ./tests:/workspace/tests diff --git a/docs/app_reference/app.md b/docs/app_reference/app.md index 4096643c..292683fa 100644 --- a/docs/app_reference/app.md +++ b/docs/app_reference/app.md @@ -1,3 +1,3 @@ # App Reference -::: pyspa +::: app diff --git a/docs/code_reference/cli.md b/docs/code_reference/cli.md index c1445a9a..c974f579 100644 --- a/docs/code_reference/cli.md +++ b/docs/code_reference/cli.md @@ -1,3 +1,3 @@ # CLI -::: pyspa.cli +::: app.cli diff --git a/docs/code_reference/config.md b/docs/code_reference/config.md index 6cbd22d1..9be9e5e5 100644 --- a/docs/code_reference/config.md +++ b/docs/code_reference/config.md @@ -1,3 +1,3 @@ # Configuration -::: pyspa.config +::: app.config diff --git a/docs/developer_guide/commands.md b/docs/developer_guide/commands.md index cb09f85e..e2dc912a 100644 --- a/docs/developer_guide/commands.md +++ b/docs/developer_guide/commands.md @@ -8,7 +8,7 @@ - `make check` - Run the test and lint commands. -- `make build` - Build a docker image locally using the Dockerfile. The image will be named _pyspa_. +- `make build` - Build a docker image locally using the Dockerfile. The image will be named _app_. - `make gen-docs` - Generate HTML documentation. diff --git a/docs/developer_guide/developer_setup.md b/docs/developer_guide/developer_setup.md index ac4865dd..7f134b76 100644 --- a/docs/developer_guide/developer_setup.md +++ b/docs/developer_guide/developer_setup.md @@ -79,7 +79,7 @@ make build To run the image: ```bash -docker run --rm pyspa hello user -docker run --rm pyspa goodbye user -docker run --rm pyspa version +docker run --rm app hello user +docker run --rm app goodbye user +docker run --rm app version ``` diff --git a/docs/extras/file_tree.md b/docs/extras/file_tree.md index 7a1ccee7..b5fd84fc 100644 --- a/docs/extras/file_tree.md +++ b/docs/extras/file_tree.md @@ -28,7 +28,7 @@ ├── pyproject.toml ├── README.md ├── src -│ └── pyspa +│ └── app │ ├── core │ │ ├── __init__.py │ │ ├── module1.py diff --git a/docs/user_guide/installation.md b/docs/user_guide/installation.md index 22e2fdaa..ccd90d4d 100644 --- a/docs/user_guide/installation.md +++ b/docs/user_guide/installation.md @@ -3,7 +3,7 @@ To install the package using `pip`: ```bash -pip install pyspa +pip install app ``` To download the CLI application using `docker`: diff --git a/mypy.ini b/mypy.ini index 961d6195..70494b28 100644 --- a/mypy.ini +++ b/mypy.ini @@ -14,10 +14,10 @@ implicit_reexport = False show_error_codes = True exclude = [".venv","*/migrations/*"] -[mypy-pyspa.db.migrations.*] +[mypy-app.db.migrations.*] ignore_errors = True -[mypy-pyspa.models.base.*] +[mypy-app.models.base.*] warn_unused_ignores = False [mypy-tests.*] diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..99bb57e8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,16541 @@ +{ + "name": "starlite-spa", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "starlite-spa", + "version": "0.0.0", + "dependencies": { + "lit": ">=2.2.4", + "postcss": ">=8.4.14" + }, + "devDependencies": { + "@11ty/eleventy": ">=1.0.1", + "@11ty/eleventy-plugin-syntaxhighlight": ">=4.0.0", + "@custom-elements-manifest/analyzer": ">=0.6.3", + "@open-wc/testing": ">=3.1.5", + "@typescript-eslint/eslint-plugin": ">=5.25.0", + "@typescript-eslint/parser": ">=5.25.0", + "autoprefixer": ">=10.4.2", + "eslint": ">=8.8.0", + "eslint-plugin-lit": ">=1.6.1", + "eslint-plugin-wc": ">=1.3.2", + "lit-analyzer": ">=0.0.6", + "prettier": ">=2.6.2", + "rimraf": ">=3.0.2", + "tailwindcss": ">=3.0.18", + "typescript": ">=4.6.4", + "vite": ">=3.1.0" + } + }, + "node_modules/@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", + "dev": true + }, + "node_modules/@11ty/eleventy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", + "dev": true, + "dependencies": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", + "lodash": "^4.17.21", + "luxon": "^2.5.0", + "markdown-it": "^12.3.2", + "minimist": "^1.2.6", + "moo": "^0.5.1", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "pretty": "^2.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", + "slugify": "^1.6.5" + }, + "bin": { + "eleventy": "cmd.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-plugin-syntaxhighlight": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz", + "integrity": "sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ==", + "dev": true, + "dependencies": { + "linkedom": "^0.13.2", + "prismjs": "^1.26.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", + "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@custom-elements-manifest/analyzer": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz", + "integrity": "sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig==", + "dev": true, + "dependencies": { + "@custom-elements-manifest/find-dependencies": "^0.0.5", + "@web/config-loader": "0.1.3", + "chokidar": "3.5.2", + "command-line-args": "5.1.2", + "comment-parser": "1.2.4", + "custom-elements-manifest": "1.0.0", + "debounce": "1.2.1", + "globby": "11.0.4", + "typescript": "~4.3.2" + }, + "bin": { + "cem": "cem.js", + "custom-elements-manifest": "cem.js" + } + }, + "node_modules/@custom-elements-manifest/analyzer/node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "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" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@custom-elements-manifest/analyzer/node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@custom-elements-manifest/find-dependencies": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz", + "integrity": "sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==", + "dev": true, + "dependencies": { + "es-module-lexer": "^0.9.3" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", + "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", + "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@esm-bundle/chai": { + "version": "4.3.4-fix.0", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", + "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", + "dev": true, + "dependencies": { + "@types/chai": "^4.2.12" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@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, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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==", + "dev": true + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "node_modules/@lit/reactive-element": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.4.1.tgz", + "integrity": "sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==" + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-wc/chai-dom-equals": { + "version": "0.12.36", + "resolved": "https://registry.npmjs.org/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz", + "integrity": "sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA==", + "dev": true, + "dependencies": { + "@open-wc/semantic-dom-diff": "^0.13.16", + "@types/chai": "^4.1.7" + } + }, + "node_modules/@open-wc/chai-dom-equals/node_modules/@open-wc/semantic-dom-diff": { + "version": "0.13.21", + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz", + "integrity": "sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==", + "dev": true + }, + "node_modules/@open-wc/dedupe-mixin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz", + "integrity": "sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q==", + "dev": true + }, + "node_modules/@open-wc/scoped-elements": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz", + "integrity": "sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw==", + "dev": true, + "dependencies": { + "@lit/reactive-element": "^1.0.0", + "@open-wc/dedupe-mixin": "^1.3.0" + } + }, + "node_modules/@open-wc/semantic-dom-diff": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz", + "integrity": "sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.1", + "@web/test-runner-commands": "^0.6.1" + } + }, + "node_modules/@open-wc/testing": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.6.tgz", + "integrity": "sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ==", + "dev": true, + "dependencies": { + "@esm-bundle/chai": "^4.3.4-fix.0", + "@open-wc/chai-dom-equals": "^0.12.36", + "@open-wc/semantic-dom-diff": "^0.19.7", + "@open-wc/testing-helpers": "^2.1.2", + "@types/chai": "^4.2.11", + "@types/chai-dom": "^0.0.12", + "@types/sinon-chai": "^3.2.3", + "chai-a11y-axe": "^1.3.2" + } + }, + "node_modules/@open-wc/testing-helpers": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz", + "integrity": "sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w==", + "dev": true, + "dependencies": { + "@open-wc/scoped-elements": "^2.1.3", + "lit": "^2.0.0", + "lit-html": "^2.0.0" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dev": true, + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/babel__code-frame": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz", + "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", + "dev": true + }, + "node_modules/@types/chai-dom": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-0.0.12.tgz", + "integrity": "sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "dev": true + }, + "node_modules/@types/convert-source-map": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.2.tgz", + "integrity": "sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg==", + "dev": true + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "node_modules/@types/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "dev": true + }, + "node_modules/@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "dev": true, + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dev": true, + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.7.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz", + "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinon-chai": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", + "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "dev": true, + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", + "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/type-utils": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", + "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", + "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", + "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", + "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", + "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", + "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", + "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@web/browser-logs": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.5.tgz", + "integrity": "sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg==", + "dev": true, + "dependencies": { + "errorstacks": "^2.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@web/config-loader": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", + "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", + "dev": true, + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@web/dev-server-core": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.19.tgz", + "integrity": "sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^1.2.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^4.0.6", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^6.0.0", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@web/dev-server-core/node_modules/es-module-lexer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", + "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", + "dev": true + }, + "node_modules/@web/parse5-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", + "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", + "dev": true, + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@web/test-runner-commands": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz", + "integrity": "sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg==", + "dev": true, + "dependencies": { + "@web/test-runner-core": "^0.10.27", + "mkdirp": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@web/test-runner-core": { + "version": "0.10.27", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.27.tgz", + "integrity": "sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^1.5.1", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.2.1", + "@web/dev-server-core": "^0.3.18", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^1.7.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "ip": "^1.1.5", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "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/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", + "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", + "dev": true, + "dependencies": { + "browser-sync-client": "^2.27.10", + "browser-sync-ui": "^2.27.10", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "qs": "6.2.3", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "1.0.2", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", + "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", + "dev": true, + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6", + "typescript": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", + "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", + "dev": true, + "dependencies": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "node_modules/bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001411", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz", + "integrity": "sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chai-a11y-axe": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz", + "integrity": "sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw==", + "dev": true, + "dependencies": { + "axe-core": "^4.3.3" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/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/cliui/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/cliui/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/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", + "dev": true, + "dependencies": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + } + }, + "node_modules/co-body/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.2.tgz", + "integrity": "sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA==", + "dev": true, + "dependencies": { + "array-back": "^6.1.2", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/condense-newlines/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/custom-elements-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz", + "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==", + "dev": true + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/didyoumean2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-4.1.0.tgz", + "integrity": "sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "leven": "^3.1.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "dependencies": { + "tfunk": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.261", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", + "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/errorstacks": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.0.tgz", + "integrity": "sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", + "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.9", + "@esbuild/linux-loong64": "0.15.9", + "esbuild-android-64": "0.15.9", + "esbuild-android-arm64": "0.15.9", + "esbuild-darwin-64": "0.15.9", + "esbuild-darwin-arm64": "0.15.9", + "esbuild-freebsd-64": "0.15.9", + "esbuild-freebsd-arm64": "0.15.9", + "esbuild-linux-32": "0.15.9", + "esbuild-linux-64": "0.15.9", + "esbuild-linux-arm": "0.15.9", + "esbuild-linux-arm64": "0.15.9", + "esbuild-linux-mips64le": "0.15.9", + "esbuild-linux-ppc64le": "0.15.9", + "esbuild-linux-riscv64": "0.15.9", + "esbuild-linux-s390x": "0.15.9", + "esbuild-netbsd-64": "0.15.9", + "esbuild-openbsd-64": "0.15.9", + "esbuild-sunos-64": "0.15.9", + "esbuild-windows-32": "0.15.9", + "esbuild-windows-64": "0.15.9", + "esbuild-windows-arm64": "0.15.9" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", + "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", + "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", + "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", + "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", + "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", + "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", + "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", + "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", + "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", + "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", + "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", + "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", + "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", + "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", + "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", + "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", + "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", + "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", + "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", + "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "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" + } + }, + "node_modules/eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "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.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-lit": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", + "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "eslint": ">= 5" + } + }, + "node_modules/eslint-plugin-wc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz", + "integrity": "sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw==", + "dev": true, + "dependencies": { + "is-valid-element-name": "^1.0.0", + "js-levenshtein-esm": "^1.2.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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==", + "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/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/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, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-replace/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true + }, + "node_modules/glob/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/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.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", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-valid-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz", + "integrity": "sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw==", + "dev": true, + "dependencies": { + "is-potential-custom-element-name": "^1.0.0" + } + }, + "node_modules/is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/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/jake/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/jake/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/jake/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/jake/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/jake/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/js-beautify": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-levenshtein-esm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz", + "integrity": "sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dev": true, + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-etag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", + "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", + "dev": true, + "dependencies": { + "etag": "^1.8.1" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/linkedom": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.13.7.tgz", + "integrity": "sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg==", + "dev": true, + "dependencies": { + "css-select": "^4.2.1", + "cssom": "^0.5.0", + "html-escaper": "^3.0.3", + "htmlparser2": "^7.2.0", + "uhyphen": "^0.1.0" + } + }, + "node_modules/linkedom/node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/liquidjs": { + "version": "9.42.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", + "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", + "dev": true, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=4.8.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, + "node_modules/lit": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz", + "integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==", + "dependencies": { + "@lit/reactive-element": "^1.4.0", + "lit-element": "^3.2.0", + "lit-html": "^2.3.0" + } + }, + "node_modules/lit-analyzer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", + "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "didyoumean2": "4.1.0", + "fast-glob": "^2.2.6", + "parse5": "5.1.0", + "ts-simple-type": "~1.0.5", + "vscode-css-languageservice": "4.3.0", + "vscode-html-languageservice": "3.1.0", + "web-component-analyzer": "~1.1.1" + }, + "bin": { + "lit-analyzer": "cli.js" + } + }, + "node_modules/lit-analyzer/node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/lit-analyzer/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/lit-analyzer/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/lit-analyzer/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-analyzer/node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "node_modules/lit-analyzer/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lit-element": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", + "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "dependencies": { + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" + } + }, + "node_modules/lit-html": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.3.1.tgz", + "integrity": "sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/localtunnel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "dependencies": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "bin": { + "lt": "bin/lt.js" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/localtunnel/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/localtunnel/node_modules/yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/localtunnel/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/luxon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true, + "bin": { + "mime": "cli.js" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/nanocolors": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", + "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dev": true, + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "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.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dev": true, + "dependencies": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "dependencies": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "dev": true, + "dependencies": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + } + }, + "node_modules/recursive-copy/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/recursive-copy/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/recursive-copy/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/recursive-copy/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dev": true, + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/resolve-path/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/resp-modifier/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/resp-modifier/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "dependencies": { + "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/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.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "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" + } + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/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/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==", + "dev": true + }, + "node_modules/slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-throttle/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", + "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "dev": true, + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/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/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/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/tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + } + }, + "node_modules/tfunk/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tfunk/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true + }, + "node_modules/ts-simple-type": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", + "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", + "dev": true + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "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/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uhyphen": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.1.0.tgz", + "integrity": "sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", + "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.6", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vscode-css-languageservice": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz", + "integrity": "sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==", + "dev": true, + "dependencies": { + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "node_modules/vscode-html-languageservice": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz", + "integrity": "sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==", + "dev": true, + "dependencies": { + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", + "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", + "dev": true + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", + "dev": true + }, + "node_modules/vscode-nls": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", + "dev": true + }, + "node_modules/vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "node_modules/web-component-analyzer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz", + "integrity": "sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.2", + "ts-simple-type": "~1.0.5", + "typescript": "^3.8.3", + "yargs": "^15.3.1" + }, + "bin": { + "wca": "cli.js", + "web-component-analyzer": "cli.js" + } + }, + "node_modules/web-component-analyzer/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/web-component-analyzer/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/web-component-analyzer/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/web-component-analyzer/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/web-component-analyzer/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/web-component-analyzer/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/web-component-analyzer/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/web-component-analyzer/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/web-component-analyzer/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "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/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "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" + } + } + }, + "dependencies": { + "@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", + "dev": true + }, + "@11ty/eleventy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", + "dev": true, + "requires": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", + "lodash": "^4.17.21", + "luxon": "^2.5.0", + "markdown-it": "^12.3.2", + "minimist": "^1.2.6", + "moo": "^0.5.1", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "pretty": "^2.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", + "slugify": "^1.6.5" + } + }, + "@11ty/eleventy-plugin-syntaxhighlight": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz", + "integrity": "sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ==", + "dev": true, + "requires": { + "linkedom": "^0.13.2", + "prismjs": "^1.26.0" + } + }, + "@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", + "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", + "dev": true + }, + "@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + } + }, + "@custom-elements-manifest/analyzer": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz", + "integrity": "sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig==", + "dev": true, + "requires": { + "@custom-elements-manifest/find-dependencies": "^0.0.5", + "@web/config-loader": "0.1.3", + "chokidar": "3.5.2", + "command-line-args": "5.1.2", + "comment-parser": "1.2.4", + "custom-elements-manifest": "1.0.0", + "debounce": "1.2.1", + "globby": "11.0.4", + "typescript": "~4.3.2" + }, + "dependencies": { + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "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" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + } + } + }, + "@custom-elements-manifest/find-dependencies": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz", + "integrity": "sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==", + "dev": true, + "requires": { + "es-module-lexer": "^0.9.3" + } + }, + "@esbuild/android-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", + "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", + "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.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" + } + }, + "@esm-bundle/chai": { + "version": "4.3.4-fix.0", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", + "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", + "dev": true, + "requires": { + "@types/chai": "^4.2.12" + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@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": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@lit/reactive-element": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.4.1.tgz", + "integrity": "sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@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" + } + }, + "@open-wc/chai-dom-equals": { + "version": "0.12.36", + "resolved": "https://registry.npmjs.org/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz", + "integrity": "sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA==", + "dev": true, + "requires": { + "@open-wc/semantic-dom-diff": "^0.13.16", + "@types/chai": "^4.1.7" + }, + "dependencies": { + "@open-wc/semantic-dom-diff": { + "version": "0.13.21", + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz", + "integrity": "sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==", + "dev": true + } + } + }, + "@open-wc/dedupe-mixin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz", + "integrity": "sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q==", + "dev": true + }, + "@open-wc/scoped-elements": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz", + "integrity": "sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw==", + "dev": true, + "requires": { + "@lit/reactive-element": "^1.0.0", + "@open-wc/dedupe-mixin": "^1.3.0" + } + }, + "@open-wc/semantic-dom-diff": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz", + "integrity": "sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA==", + "dev": true, + "requires": { + "@types/chai": "^4.3.1", + "@web/test-runner-commands": "^0.6.1" + } + }, + "@open-wc/testing": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.6.tgz", + "integrity": "sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ==", + "dev": true, + "requires": { + "@esm-bundle/chai": "^4.3.4-fix.0", + "@open-wc/chai-dom-equals": "^0.12.36", + "@open-wc/semantic-dom-diff": "^0.19.7", + "@open-wc/testing-helpers": "^2.1.2", + "@types/chai": "^4.2.11", + "@types/chai-dom": "^0.0.12", + "@types/sinon-chai": "^3.2.3", + "chai-a11y-axe": "^1.3.2" + } + }, + "@open-wc/testing-helpers": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz", + "integrity": "sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w==", + "dev": true, + "requires": { + "@open-wc/scoped-elements": "^2.1.3", + "lit": "^2.0.0", + "lit-html": "^2.0.0" + } + }, + "@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dev": true, + "requires": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + } + }, + "@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/babel__code-frame": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz", + "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", + "dev": true + }, + "@types/chai-dom": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-0.0.12.tgz", + "integrity": "sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "dev": true + }, + "@types/convert-source-map": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.2.tgz", + "integrity": "sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==", + "dev": true + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "dev": true + }, + "@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "dev": true + }, + "@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "dev": true, + "requires": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dev": true, + "requires": { + "@types/koa": "*" + } + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "18.7.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz", + "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinon-chai": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", + "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", + "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/type-utils": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", + "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", + "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", + "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", + "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", + "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "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" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", + "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", + "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.38.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@web/browser-logs": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.5.tgz", + "integrity": "sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg==", + "dev": true, + "requires": { + "errorstacks": "^2.2.0" + } + }, + "@web/config-loader": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", + "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", + "dev": true, + "requires": { + "semver": "^7.3.4" + } + }, + "@web/dev-server-core": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.19.tgz", + "integrity": "sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA==", + "dev": true, + "requires": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^1.2.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^4.0.6", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^6.0.0", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "dependencies": { + "es-module-lexer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", + "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", + "dev": true + } + } + }, + "@web/parse5-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", + "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", + "dev": true, + "requires": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + } + }, + "@web/test-runner-commands": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz", + "integrity": "sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.10.27", + "mkdirp": "^1.0.4" + } + }, + "@web/test-runner-core": { + "version": "0.10.27", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.27.tgz", + "integrity": "sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^1.5.1", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.2.1", + "@web/dev-server-core": "^0.3.18", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^1.7.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "ip": "^1.1.5", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" + } + }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "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": {} + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "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": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "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 + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "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-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "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": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6" + } + }, + "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 + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-sync": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", + "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", + "dev": true, + "requires": { + "browser-sync-client": "^2.27.10", + "browser-sync-ui": "^2.27.10", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "qs": "6.2.3", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "1.0.2", + "yargs": "^17.3.1" + } + }, + "browser-sync-client": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", + "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", + "dev": true, + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6", + "typescript": "^4.6.2" + } + }, + "browser-sync-ui": { + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", + "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001411", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz", + "integrity": "sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g==", + "dev": true + }, + "chai-a11y-axe": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz", + "integrity": "sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw==", + "dev": true, + "requires": { + "axe-core": "^4.3.3" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "requires": { + "is-regex": "^1.0.3" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", + "dev": true, + "requires": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "dependencies": { + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "command-line-args": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.2.tgz", + "integrity": "sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA==", + "dev": true, + "requires": { + "array-back": "^6.1.2", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "comment-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "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 + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "custom-elements-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz", + "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==", + "dev": true + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true + }, + "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-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "requires": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + } + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "didyoumean2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-4.1.0.tgz", + "integrity": "sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "leven": "^3.1.0", + "lodash.deburr": "^4.1.0" + } + }, + "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" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "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" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "requires": { + "tfunk": "^4.0.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.261", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", + "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==", + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + } + } + }, + "engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "errorstacks": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.0.tgz", + "integrity": "sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "esbuild": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", + "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.9", + "@esbuild/linux-loong64": "0.15.9", + "esbuild-android-64": "0.15.9", + "esbuild-android-arm64": "0.15.9", + "esbuild-darwin-64": "0.15.9", + "esbuild-darwin-arm64": "0.15.9", + "esbuild-freebsd-64": "0.15.9", + "esbuild-freebsd-arm64": "0.15.9", + "esbuild-linux-32": "0.15.9", + "esbuild-linux-64": "0.15.9", + "esbuild-linux-arm": "0.15.9", + "esbuild-linux-arm64": "0.15.9", + "esbuild-linux-mips64le": "0.15.9", + "esbuild-linux-ppc64le": "0.15.9", + "esbuild-linux-riscv64": "0.15.9", + "esbuild-linux-s390x": "0.15.9", + "esbuild-netbsd-64": "0.15.9", + "esbuild-openbsd-64": "0.15.9", + "esbuild-sunos-64": "0.15.9", + "esbuild-windows-32": "0.15.9", + "esbuild-windows-64": "0.15.9", + "esbuild-windows-arm64": "0.15.9" + } + }, + "esbuild-android-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", + "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", + "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", + "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", + "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", + "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", + "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", + "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", + "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", + "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", + "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", + "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", + "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", + "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", + "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", + "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", + "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", + "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", + "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", + "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", + "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "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.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "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.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "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 + }, + "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" + } + }, + "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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-lit": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", + "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + } + }, + "eslint-plugin-wc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz", + "integrity": "sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw==", + "dev": true, + "requires": { + "is-valid-element-name": "^1.0.0", + "js-levenshtein-esm": "^1.2.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "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.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "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 + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "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" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + }, + "dependencies": { + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + } + } + }, + "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.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.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.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "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" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + }, + "dependencies": { + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + } + } + }, + "http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "requires": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + } + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "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 + }, + "inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.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-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-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-valid-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz", + "integrity": "sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw==", + "dev": true, + "requires": { + "is-potential-custom-element-name": "^1.0.0" + } + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-beautify": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + } + }, + "js-levenshtein-esm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz", + "integrity": "sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "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-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==", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", + "dev": true + }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "requires": { + "tsscmp": "1.0.6" + } + }, + "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 + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dev": true, + "requires": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "requires": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + } + }, + "koa-etag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", + "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", + "dev": true, + "requires": { + "etag": "^1.8.1" + } + }, + "koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + } + }, + "koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "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" + } + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "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" + } + }, + "lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "linkedom": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.13.7.tgz", + "integrity": "sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg==", + "dev": true, + "requires": { + "css-select": "^4.2.1", + "cssom": "^0.5.0", + "html-escaper": "^3.0.3", + "htmlparser2": "^7.2.0", + "uhyphen": "^0.1.0" + }, + "dependencies": { + "html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "dev": true + } + } + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "liquidjs": { + "version": "9.42.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", + "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", + "dev": true + }, + "lit": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz", + "integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==", + "requires": { + "@lit/reactive-element": "^1.4.0", + "lit-element": "^3.2.0", + "lit-html": "^2.3.0" + } + }, + "lit-analyzer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", + "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "didyoumean2": "4.1.0", + "fast-glob": "^2.2.6", + "parse5": "5.1.0", + "ts-simple-type": "~1.0.5", + "vscode-css-languageservice": "4.3.0", + "vscode-html-languageservice": "3.1.0", + "web-component-analyzer": "~1.1.1" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + } + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "lit-element": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", + "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "requires": { + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.2.0" + } + }, + "lit-html": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.3.1.tgz", + "integrity": "sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + }, + "localtunnel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "requires": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "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 + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "luxon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "dependencies": { + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true + }, + "nanocolors": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", + "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + } + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "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.3" + } + }, + "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" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "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" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "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-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "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 + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + } + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", + "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 + }, + "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 + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "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" + } + }, + "recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "dev": true, + "requires": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + }, + "dependencies": { + "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" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.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-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dev": true, + "requires": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "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": { + "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" + } + } + } + }, + "rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-client": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "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" + } + }, + "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-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true + }, + "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + }, + "tailwindcss": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", + "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "dev": true, + "requires": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "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 + }, + "tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true + }, + "ts-simple-type": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", + "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "dev": true + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", + "dev": true, + "optional": true + }, + "uhyphen": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.1.0.tgz", + "integrity": "sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "update-browserslist-db": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "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 + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vite": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", + "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", + "dev": true, + "requires": { + "esbuild": "^0.15.6", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" + } + }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true + }, + "vscode-css-languageservice": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz", + "integrity": "sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==", + "dev": true, + "requires": { + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "vscode-html-languageservice": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz", + "integrity": "sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==", + "dev": true, + "requires": { + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", + "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", + "dev": true + }, + "vscode-languageserver-types": { + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", + "dev": true + }, + "vscode-nls": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", + "dev": true + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "web-component-analyzer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz", + "integrity": "sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.2", + "ts-simple-type": "~1.0.5", + "typescript": "^3.8.3", + "yargs": "^15.3.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "dev": true + }, + "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 + } + } +} diff --git a/package.json b/package.json index a836a589..59bd3d7f 100644 --- a/package.json +++ b/package.json @@ -2,21 +2,33 @@ "name": "starlite-spa", "private": true, "version": "0.0.0", - "type": "module", "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview" + "dev": "vite dev", + "start": "vite --host", + "build": "vite build", + "lint": "eslint src --fix" }, "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" + "lit": ">=2.2.4", + "postcss": ">=8.4.14" }, "devDependencies": { - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.1.0", - "typescript": "^4.6.4", - "vite": "^3.1.0" - } -} \ No newline at end of file + "@11ty/eleventy": ">=1.0.1", + "@11ty/eleventy-plugin-syntaxhighlight": ">=4.0.0", + "@custom-elements-manifest/analyzer": ">=0.6.3", + "@open-wc/testing": ">=3.1.5", + "@typescript-eslint/eslint-plugin": ">=5.25.0", + "@typescript-eslint/parser": ">=5.25.0", + "autoprefixer": ">=10.4.2", + "eslint": ">=8.8.0", + "eslint-plugin-lit": ">=1.6.1", + "eslint-plugin-wc": ">=1.3.2", + "lit-analyzer": ">=0.0.6", + "prettier": ">=2.6.2", + "rimraf": ">=3.0.2", + "tailwindcss": ">=3.0.18", + "typescript": ">=4.6.4", + "vite": ">=3.1.0" + }, + "customElements": "custom-elements.json" +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/pyproject.toml b/pyproject.toml index 4f7d8986..47e4125d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,15 +21,15 @@ include = ["CHANGELOG.md"] keywords = ["api", "rest", "http", "asgi", "pydantic", "starlette", "fastapi", "framework", "websocket", "vite", "spa"] license = "MIT" maintainers = ["Cody Fincher "] -name = "pyspa" +name = "app" packages = [ - {include = "pyspa", from = "src"}, + {include = "app", from = "src"}, ] readme = "README.md" -repository = "https://github.com/cofin/pyspa" +repository = "https://github.com/cofin/app" version = "0.1.0" [tool.poetry.scripts] -pyspa = "pyspa.__main__:main" +app = "app.__main__:main" [tool.poetry.dependencies] alembic = "*" diff --git a/sonar-project.properties b/sonar-project.properties index 0dbcec92..9bbca639 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,8 +1,8 @@ -sonar.projectKey=pyspa +sonar.projectKey=app sonar.organization=cofin sonar.python.coverage.reportPaths=coverage.xml sonar.test.inclusions=tests/**/*.py sonar.sources=src sonar.sourceEncoding=UTF-8 -sonar.cpd.exclusions=src/pyspa/db/migrations/versions/**/*,utils/**/* +sonar.cpd.exclusions=src/app/db/migrations/versions/**/*,utils/**/* sonar.python.version=3.10 diff --git a/src/pyspa/__init__.py b/src/app/__init__.py similarity index 66% rename from src/pyspa/__init__.py rename to src/app/__init__.py index b4ae2bed..7803ccaf 100644 --- a/src/pyspa/__init__.py +++ b/src/app/__init__.py @@ -1,7 +1,7 @@ import logging -from pyspa import api, asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web -from pyspa.version import __version__ +from app import api, asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web +from app.version import __version__ logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) diff --git a/src/pyspa/__main__.py b/src/app/__main__.py similarity index 85% rename from src/pyspa/__main__.py rename to src/app/__main__.py index 8736c494..6f85bfd3 100644 --- a/src/pyspa/__main__.py +++ b/src/app/__main__.py @@ -6,8 +6,8 @@ def main() -> None: current_path = Path(__file__).parent.resolve() sys.path.append(str(current_path)) try: - from pyspa.cli import cli - from pyspa.config import log_config + from app.cli import cli + from app.config import log_config log_config.configure() except ImportError: diff --git a/src/pyspa/api/__init__.py b/src/app/api/__init__.py similarity index 89% rename from src/pyspa/api/__init__.py rename to src/app/api/__init__.py index 844c9737..fc395303 100644 --- a/src/pyspa/api/__init__.py +++ b/src/app/api/__init__.py @@ -1,6 +1,6 @@ from starlite import Router -from pyspa.api import routes +from app.api import routes router = Router( path="", diff --git a/src/pyspa/api/routes/__init__.py b/src/app/api/routes/__init__.py similarity index 88% rename from src/pyspa/api/routes/__init__.py rename to src/app/api/routes/__init__.py index 619c1e59..18fdff33 100644 --- a/src/pyspa/api/routes/__init__.py +++ b/src/app/api/routes/__init__.py @@ -1,6 +1,6 @@ from starlite import Router -from pyspa.api.routes import collection, health, user +from app.api.routes import collection, health, user __all__ = ["collection_router", "health_router", "access_router", "user_router"] diff --git a/src/pyspa/api/routes/access.py b/src/app/api/routes/access.py similarity index 100% rename from src/pyspa/api/routes/access.py rename to src/app/api/routes/access.py diff --git a/src/pyspa/api/routes/collection.py b/src/app/api/routes/collection.py similarity index 93% rename from src/pyspa/api/routes/collection.py rename to src/app/api/routes/collection.py index 9525aae7..b8d13d12 100644 --- a/src/pyspa/api/routes/collection.py +++ b/src/app/api/routes/collection.py @@ -5,8 +5,8 @@ from starlite import Body, Parameter, RequestEncodingType, UploadFile, post from starlite.controller import Controller -from pyspa.core import guards -from pyspa.schemas import CamelizedBaseSchema +from app.core import guards +from app.schemas import CamelizedBaseSchema logger = logging.getLogger(__name__) diff --git a/src/pyspa/api/routes/health.py b/src/app/api/routes/health.py similarity index 84% rename from src/pyspa/api/routes/health.py rename to src/app/api/routes/health.py index fa04480c..56ddfd2b 100644 --- a/src/pyspa/api/routes/health.py +++ b/src/app/api/routes/health.py @@ -5,12 +5,12 @@ from sqlalchemy.ext.asyncio import AsyncSession from starlite import MediaType, Response, get -from pyspa import schemas -from pyspa.config import settings -from pyspa.config.paths import urls -from pyspa.core.cache import RedisAsyncioBackend -from pyspa.core.cache import config as cache_config -from pyspa.version import __version__ +from app import schemas +from app.config import settings +from app.config.paths import urls +from app.core.cache import RedisAsyncioBackend +from app.core.cache import config as cache_config +from app.version import __version__ logger = logging.getLogger() diff --git a/src/pyspa/api/routes/user.py b/src/app/api/routes/user.py similarity index 94% rename from src/pyspa/api/routes/user.py rename to src/app/api/routes/user.py index c9f8c44c..99079287 100644 --- a/src/pyspa/api/routes/user.py +++ b/src/app/api/routes/user.py @@ -3,8 +3,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from starlite import Body, MediaType, Request, RequestEncodingType, post -from pyspa import schemas, services -from pyspa.config.paths import urls +from app import schemas, services +from app.config.paths import urls logger = logging.getLogger(__name__) diff --git a/src/pyspa/asgi.py b/src/app/asgi.py similarity index 80% rename from src/pyspa/asgi.py rename to src/app/asgi.py index 12c6457b..e505c82b 100644 --- a/src/pyspa/asgi.py +++ b/src/app/asgi.py @@ -1,9 +1,9 @@ from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR from starlite import Provide, Starlite -from pyspa import api, db, middleware -from pyspa.config import log_config, settings -from pyspa.core import cache, client, compression, cors, exceptions, openapi, response, security, static_files +from app import api, db, middleware +from app.config import log_config, settings +from app.core import cache, client, compression, cors, exceptions, openapi, response, security, static_files __all__ = ["app"] diff --git a/src/app/cli/__init__.py b/src/app/cli/__init__.py new file mode 100644 index 00000000..3d79bb37 --- /dev/null +++ b/src/app/cli/__init__.py @@ -0,0 +1,5 @@ +from app.cli import commands +from app.cli.app import cli +from app.cli.console import console + +__all__ = ["cli", "commands", "console"] diff --git a/src/pyspa/cli/app.py b/src/app/cli/app.py similarity index 84% rename from src/pyspa/cli/app.py rename to src/app/cli/app.py index 31826fb4..aae034f7 100644 --- a/src/pyspa/cli/app.py +++ b/src/app/cli/app.py @@ -4,8 +4,8 @@ import click -from pyspa.cli import commands -from pyspa.config import log_config, settings +from app.cli import commands +from app.config import log_config, settings @click.group(help=settings.app.NAME) diff --git a/src/app/cli/commands/__init__.py b/src/app/cli/commands/__init__.py new file mode 100644 index 00000000..41dc522b --- /dev/null +++ b/src/app/cli/commands/__init__.py @@ -0,0 +1,3 @@ +from app.cli.commands import manage, run + +__all__ = ["manage", "run"] diff --git a/src/pyspa/cli/commands/manage.py b/src/app/cli/commands/manage.py similarity index 97% rename from src/pyspa/cli/commands/manage.py rename to src/app/cli/commands/manage.py index db1be80f..eef541bf 100644 --- a/src/pyspa/cli/commands/manage.py +++ b/src/app/cli/commands/manage.py @@ -12,12 +12,12 @@ from sqlalchemy import Table from sqlalchemy.schema import DropTable -from pyspa import schemas, services, utils -from pyspa.asgi import app -from pyspa.cli.console import console -from pyspa.config import settings -from pyspa.db import AsyncScopedSession, engine -from pyspa.models import BaseModel, meta +from app import schemas, services, utils +from app.asgi import app +from app.cli.console import console +from app.config import settings +from app.db import AsyncScopedSession, engine +from app.models import BaseModel, meta logger = logging.getLogger() diff --git a/src/pyspa/cli/commands/run.py b/src/app/cli/commands/run.py similarity index 95% rename from src/pyspa/cli/commands/run.py rename to src/app/cli/commands/run.py index e4bc1075..94bf3c4e 100644 --- a/src/pyspa/cli/commands/run.py +++ b/src/app/cli/commands/run.py @@ -5,9 +5,9 @@ import click from rich.rule import Rule -from pyspa.cli.console import console, print_prologue -from pyspa.config import settings -from pyspa.config.logging import log_config +from app.cli.console import console, print_prologue +from app.config import settings +from app.config.logging import log_config @click.group(name="run", invoke_without_command=False) diff --git a/src/pyspa/cli/console.py b/src/app/cli/console.py similarity index 96% rename from src/pyspa/cli/console.py rename to src/app/cli/console.py index b95229b9..37b7c9cc 100644 --- a/src/pyspa/cli/console.py +++ b/src/app/cli/console.py @@ -2,7 +2,7 @@ from rich.panel import Panel from rich.traceback import install as rich_tracebacks -from pyspa.config import settings +from app.config import settings __all__ = ["console"] diff --git a/src/app/config/__init__.py b/src/app/config/__init__.py new file mode 100644 index 00000000..bad1ef96 --- /dev/null +++ b/src/app/config/__init__.py @@ -0,0 +1,5 @@ +from app.config import paths +from app.config.application import settings +from app.config.logging import log_config + +__all__ = ["settings", "log_config", "paths"] diff --git a/src/pyspa/config/alembic.ini b/src/app/config/alembic.ini similarity index 97% rename from src/pyspa/config/alembic.ini rename to src/app/config/alembic.ini index d98860e1..50f1336d 100644 --- a/src/pyspa/config/alembic.ini +++ b/src/app/config/alembic.ini @@ -3,7 +3,7 @@ [alembic] prepend_sys_path = src:. # path to migration scripts -script_location = src/pyspa/db/migrations +script_location = src/app/db/migrations # template used to generate migration files file_template = %%(year)d-%%(month).2d-%%(day).2d_%%(rev)s diff --git a/src/pyspa/config/application.py b/src/app/config/application.py similarity index 96% rename from src/pyspa/config/application.py rename to src/app/config/application.py index 8bbb9271..5a0e5ac0 100644 --- a/src/pyspa/config/application.py +++ b/src/app/config/application.py @@ -15,10 +15,10 @@ from pydantic import BaseSettings as _BaseSettings from pydantic import SecretBytes, SecretStr, ValidationError, validator -from pyspa.config.paths import BASE_DIR -from pyspa.utils.serializers import convert_datetime_to_gmt, deserialize_object, serialize_object -from pyspa.utils.text import slugify -from pyspa.version import __version__ +from app.config.paths import BASE_DIR +from app.utils.serializers import convert_datetime_to_gmt, deserialize_object, serialize_object +from app.utils.text import slugify +from app.version import __version__ __all__ = [ "BASE_DIR", @@ -200,7 +200,7 @@ class ServerSettings(EnvironmentSettings): class Config: env_prefix = "SERVER_" - ASGI_APP: str = "pyspa.asgi:app" + ASGI_APP: str = "app.asgi:app" HOST: str = "0.0.0.0" # nosec PORT: int = 8000 HTTP_WORKERS: int = 1 diff --git a/src/pyspa/config/logging.py b/src/app/config/logging.py similarity index 96% rename from src/pyspa/config/logging.py rename to src/app/config/logging.py index df2b1c72..2a984130 100644 --- a/src/pyspa/config/logging.py +++ b/src/app/config/logging.py @@ -5,8 +5,8 @@ from starlette.status import HTTP_200_OK from starlite.config import LoggingConfig -from pyspa.config.application import settings -from pyspa.config.paths import urls +from app.config.application import settings +from app.config.paths import urls class AccessLogFilter(logging.Filter): diff --git a/src/pyspa/config/paths.py b/src/app/config/paths.py similarity index 81% rename from src/pyspa/config/paths.py rename to src/app/config/paths.py index 979f07fa..7c801ed8 100644 --- a/src/pyspa/config/paths.py +++ b/src/app/config/paths.py @@ -1,9 +1,9 @@ from pathlib import Path from typing import Final -from pyspa import utils +from app import utils -BASE_DIR: Final = utils.module_loading.module_to_os_path("pyspa") +BASE_DIR: Final = utils.module_loading.module_to_os_path("app") PUBLIC_DIR = Path(BASE_DIR, "web/public") ASSETS_DIR = Path(BASE_DIR, "web/assets") diff --git a/src/pyspa/core/__init__.py b/src/app/core/__init__.py similarity index 92% rename from src/pyspa/core/__init__.py rename to src/app/core/__init__.py index e0250251..843fa2b2 100644 --- a/src/pyspa/core/__init__.py +++ b/src/app/core/__init__.py @@ -1,4 +1,4 @@ -from pyspa.core import ( +from app.core import ( cache, client, compression, diff --git a/src/pyspa/core/cache.py b/src/app/core/cache.py similarity index 99% rename from src/pyspa/core/cache.py rename to src/app/core/cache.py index 610cb113..e40fb4e5 100644 --- a/src/pyspa/core/cache.py +++ b/src/app/core/cache.py @@ -6,7 +6,7 @@ from starlite.cache.base import CacheBackendProtocol from starlite.config.cache import default_cache_key_builder -from pyspa.config import settings +from app.config import settings if TYPE_CHECKING: from datetime import timedelta diff --git a/src/pyspa/core/client/__init__.py b/src/app/core/client/__init__.py similarity index 100% rename from src/pyspa/core/client/__init__.py rename to src/app/core/client/__init__.py diff --git a/src/pyspa/core/client/client.py b/src/app/core/client/client.py similarity index 100% rename from src/pyspa/core/client/client.py rename to src/app/core/client/client.py diff --git a/src/pyspa/core/client/endpoint.py b/src/app/core/client/endpoint.py similarity index 100% rename from src/pyspa/core/client/endpoint.py rename to src/app/core/client/endpoint.py diff --git a/src/pyspa/core/compression.py b/src/app/core/compression.py similarity index 100% rename from src/pyspa/core/compression.py rename to src/app/core/compression.py diff --git a/src/pyspa/core/cors.py b/src/app/core/cors.py similarity index 100% rename from src/pyspa/core/cors.py rename to src/app/core/cors.py diff --git a/src/pyspa/core/csrf.py b/src/app/core/csrf.py similarity index 89% rename from src/pyspa/core/csrf.py rename to src/app/core/csrf.py index 77ba44b8..244e0648 100644 --- a/src/pyspa/core/csrf.py +++ b/src/app/core/csrf.py @@ -1,6 +1,6 @@ from starlite.config.csrf import CSRFConfig -from pyspa.config import settings +from app.config import settings config = CSRFConfig( secret=settings.app.SECRET_KEY.get_secret_value(), diff --git a/src/pyspa/core/exceptions.py b/src/app/core/exceptions.py similarity index 100% rename from src/pyspa/core/exceptions.py rename to src/app/core/exceptions.py diff --git a/src/pyspa/core/guards.py b/src/app/core/guards.py similarity index 99% rename from src/pyspa/core/guards.py rename to src/app/core/guards.py index cdb0ec55..8ec61ac0 100644 --- a/src/pyspa/core/guards.py +++ b/src/app/core/guards.py @@ -3,7 +3,7 @@ from pydantic import UUID4 from starlite import BaseRouteHandler, NotAuthorizedException, Request -from pyspa import services +from app import services if TYPE_CHECKING: from collections.abc import Callable diff --git a/src/pyspa/core/handlers.py b/src/app/core/handlers.py similarity index 92% rename from src/pyspa/core/handlers.py rename to src/app/core/handlers.py index ded8591b..76374c6f 100644 --- a/src/pyspa/core/handlers.py +++ b/src/app/core/handlers.py @@ -1,7 +1,7 @@ import itertools from typing import TYPE_CHECKING -from pyspa.core.guards import CheckPayloadMismatch +from app.core.guards import CheckPayloadMismatch if TYPE_CHECKING: from starlite.types import Guard diff --git a/src/pyspa/core/openapi.py b/src/app/core/openapi.py similarity index 94% rename from src/pyspa/core/openapi.py rename to src/app/core/openapi.py index a2d6c209..f8c604a0 100644 --- a/src/pyspa/core/openapi.py +++ b/src/app/core/openapi.py @@ -1,8 +1,8 @@ from pydantic_openapi_schema.v3_1_0 import Contact from starlite import OpenAPIConfig -from pyspa.config import settings -from pyspa.core.security import auth +from app.config import settings +from app.core.security import auth # auth_openapi_components = Components( # securitySchemes={ diff --git a/src/pyspa/core/response.py b/src/app/core/response.py similarity index 100% rename from src/pyspa/core/response.py rename to src/app/core/response.py diff --git a/src/pyspa/core/security.py b/src/app/core/security.py similarity index 83% rename from src/pyspa/core/security.py rename to src/app/core/security.py index 2cadb70a..71a7f257 100644 --- a/src/pyspa/core/security.py +++ b/src/app/core/security.py @@ -6,15 +6,15 @@ from pydantic import UUID4 from starlite import NotAuthorizedException -from pyspa import db, services -from pyspa.config import paths, settings -from pyspa.middleware.jwt import OAuth2PasswordBearerAuth -from pyspa.utils.asyncer import run_async +from app import db, services +from app.config import paths, settings +from app.middleware.jwt import OAuth2PasswordBearerAuth +from app.utils.asyncer import run_async if TYPE_CHECKING: from pydantic import SecretBytes, SecretStr - from pyspa.models import User + from app.models import User logger = logging.getLogger() @@ -36,11 +36,6 @@ async def current_user_from_token(sub: str) -> "User": raise NotAuthorizedException -# auth = SessionAuth( -# retrieve_user_handler=current_user_from_session, -# secret=settings.app.SECRET_KEY, -# exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], -# ) auth = OAuth2PasswordBearerAuth( # nosec retrieve_user_handler=current_user_from_token, token_secret=settings.app.SECRET_KEY.get_secret_value().decode(), diff --git a/src/pyspa/core/static_files.py b/src/app/core/static_files.py similarity index 84% rename from src/pyspa/core/static_files.py rename to src/app/core/static_files.py index ba4041ab..69faec3d 100644 --- a/src/pyspa/core/static_files.py +++ b/src/app/core/static_files.py @@ -1,6 +1,6 @@ from starlite import StaticFilesConfig -from pyspa.config import paths +from app.config import paths config = [StaticFilesConfig(directories=[paths.PUBLIC_DIR, paths.ASSETS_DIR], path=paths.urls.STATIC)] """Static files config""" diff --git a/src/pyspa/db/__init__.py b/src/app/db/__init__.py similarity index 88% rename from src/pyspa/db/__init__.py rename to src/app/db/__init__.py index 1e9b0c36..be151bdc 100644 --- a/src/pyspa/db/__init__.py +++ b/src/app/db/__init__.py @@ -3,8 +3,8 @@ from sqlalchemy.ext.asyncio import async_scoped_session -from pyspa.db import db_types -from pyspa.db.engine import async_session_factory, create_async_engine, create_async_session_maker, engine +from app.db import db_types +from app.db.engine import async_session_factory, create_async_engine, create_async_session_maker, engine if TYPE_CHECKING: from sqlalchemy.ext.asyncio import AsyncSession diff --git a/src/pyspa/db/db_types.py b/src/app/db/db_types.py similarity index 100% rename from src/pyspa/db/db_types.py rename to src/app/db/db_types.py diff --git a/src/pyspa/db/engine.py b/src/app/db/engine.py similarity index 94% rename from src/pyspa/db/engine.py rename to src/app/db/engine.py index 275e6ba0..b9ae5fff 100644 --- a/src/pyspa/db/engine.py +++ b/src/app/db/engine.py @@ -8,10 +8,10 @@ from sqlalchemy.ext.asyncio import create_async_engine as _create_async_engine from sqlalchemy.pool import NullPool -from pyspa.config import settings +from app.config import settings if TYPE_CHECKING: - from pyspa.config.application import Settings + from app.config.application import Settings def _default(val: Any) -> str: @@ -61,7 +61,7 @@ def create_async_session_maker(engine: "AsyncEngine") -> async_sessionmaker[Asyn """ -Configure via [Settings][pyspa.config.application.Settings]. +Configure via [Settings][app.config.application.Settings]. Overrides default JSON serializer to use `orjson`. See [`create_async_engine()`][sqlalchemy.ext.asyncio.create_async_engine] for detailed instructions. diff --git a/src/pyspa/db/migrations/README b/src/app/db/migrations/README similarity index 100% rename from src/pyspa/db/migrations/README rename to src/app/db/migrations/README diff --git a/src/pyspa/db/migrations/env.py b/src/app/db/migrations/env.py similarity index 97% rename from src/pyspa/db/migrations/env.py rename to src/app/db/migrations/env.py index 21a270d6..ccf80c36 100644 --- a/src/pyspa/db/migrations/env.py +++ b/src/app/db/migrations/env.py @@ -6,8 +6,8 @@ from sqlalchemy import pool from sqlalchemy.ext.asyncio import async_engine_from_config -from pyspa.config import settings -from pyspa.models import BaseModel +from app.config import settings +from app.models import BaseModel if TYPE_CHECKING: from sqlalchemy.engine import Connection diff --git a/src/pyspa/db/migrations/script.py.mako b/src/app/db/migrations/script.py.mako similarity index 89% rename from src/pyspa/db/migrations/script.py.mako rename to src/app/db/migrations/script.py.mako index a0a65eb2..976739c7 100644 --- a/src/pyspa/db/migrations/script.py.mako +++ b/src/app/db/migrations/script.py.mako @@ -10,7 +10,7 @@ import sqlalchemy as sa from alembic import op from sqlalchemy.dialects import postgresql -from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime +from app.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime ${imports if imports else ""} sa.GUID = GUID diff --git a/src/pyspa/db/migrations/versions/.gitkeep b/src/app/db/migrations/versions/.gitkeep similarity index 100% rename from src/pyspa/db/migrations/versions/.gitkeep rename to src/app/db/migrations/versions/.gitkeep diff --git a/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py b/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py new file mode 100644 index 00000000..9ca3008a --- /dev/null +++ b/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py @@ -0,0 +1,206 @@ +# type: ignore +""" + +Revision ID: e5c9c377ddce +Revises: +Create Date: 2022-09-15 12:20:30.527673 + +""" +import sqlalchemy as sa +from alembic import op + +from app.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + +# revision identifiers, used by Alembic. +revision = "e5c9c377ddce" +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "team", + sa.Column("name", sa.String(length=255), nullable=False), + sa.Column("description", sa.String(length=500), nullable=True), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team")), + sa.UniqueConstraint("id", name=op.f("uq_team_id")), + ) + op.create_index(op.f("ix_team_created_at"), "team", ["created_at"], unique=False) + op.create_index(op.f("ix_team_name"), "team", ["name"], unique=False) + op.create_index(op.f("ix_team_updated_at"), "team", ["updated_at"], unique=False) + op.create_table( + "user_account", + sa.Column("full_name", sa.String(length=255), nullable=True), + sa.Column("email", sa.EmailString(length=255), nullable=False), + sa.Column("hashed_password", sa.String(length=255), nullable=True), + sa.Column("is_active", sa.Boolean(), nullable=False), + sa.Column("is_superuser", sa.Boolean(), nullable=False), + sa.Column("is_verified", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_user_account")), + sa.UniqueConstraint("id", name=op.f("uq_user_account_id")), + comment="User accounts for application access", + ) + op.create_index(op.f("ix_user_account_created_at"), "user_account", ["created_at"], unique=False) + op.create_index(op.f("ix_user_account_email"), "user_account", ["email"], unique=True) + op.create_index(op.f("ix_user_account_updated_at"), "user_account", ["updated_at"], unique=False) + op.create_table( + "team_invitation", + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("email", sa.EmailString(length=255), nullable=False), + sa.Column("role", sa.String(length=50), nullable=False), + sa.Column("is_accepted", sa.Boolean(), nullable=True), + sa.Column("invited_by_id", sa.GUID(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.Column("expires_at", sa.TimestampAwareDateTime(timezone=True), nullable=False), + sa.ForeignKeyConstraint( + ["invited_by_id"], ["user_account.id"], name=op.f("fk_team_invitation_invited_by_id_user_account") + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_invitation_team_id_team")), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team_invitation")), + sa.UniqueConstraint("id", name=op.f("uq_team_invitation_id")), + ) + op.create_index(op.f("ix_team_invitation_created_at"), "team_invitation", ["created_at"], unique=False) + op.create_index(op.f("ix_team_invitation_expires_at"), "team_invitation", ["expires_at"], unique=False) + op.create_index(op.f("ix_team_invitation_updated_at"), "team_invitation", ["updated_at"], unique=False) + op.create_table( + "team_member", + sa.Column("user_id", sa.GUID(), nullable=False), + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("role", sa.String(length=50), nullable=False), + sa.Column("is_owner", sa.Boolean(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_member_team_id_team")), + sa.ForeignKeyConstraint(["user_id"], ["user_account.id"], name=op.f("fk_team_member_user_id_user_account")), + sa.PrimaryKeyConstraint("id", name=op.f("pk_team_member")), + sa.UniqueConstraint("id", name=op.f("uq_team_member_id")), + sa.UniqueConstraint("user_id", "team_id", name=op.f("uq_team_member_user_id")), + ) + op.create_index(op.f("ix_team_member_created_at"), "team_member", ["created_at"], unique=False) + op.create_index(op.f("ix_team_member_role"), "team_member", ["role"], unique=False) + op.create_index(op.f("ix_team_member_updated_at"), "team_member", ["updated_at"], unique=False) + op.create_table( + "upload", + sa.Column("file_name", sa.String(length=255), nullable=True), + sa.Column("uploaded_by", sa.String(length=255), nullable=True), + sa.Column("is_processed", sa.Boolean(), nullable=False), + sa.Column("team_id", sa.GUID(), nullable=False), + sa.Column("id", sa.GUID(), nullable=False), + sa.Column( + "created_at", + sa.TimestampAwareDateTime(timezone=True), + server_default=sa.text("now()"), + nullable=False, + comment="Date the record was inserted", + ), + sa.Column( + "updated_at", + sa.TimestampAwareDateTime(timezone=True), + nullable=True, + comment="Date the record was last modified", + ), + sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_upload_team_id_team"), ondelete="cascade"), + sa.PrimaryKeyConstraint("id", name=op.f("pk_upload")), + sa.UniqueConstraint("id", name=op.f("uq_upload_id")), + comment="Stores links to uploaded files", + ) + op.create_index(op.f("ix_upload_created_at"), "upload", ["created_at"], unique=False) + op.create_index(op.f("ix_upload_file_name"), "upload", ["file_name"], unique=False) + op.create_index(op.f("ix_upload_is_processed"), "upload", ["is_processed"], unique=False) + op.create_index(op.f("ix_upload_updated_at"), "upload", ["updated_at"], unique=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_upload_updated_at"), table_name="upload") + op.drop_index(op.f("ix_upload_is_processed"), table_name="upload") + op.drop_index(op.f("ix_upload_file_name"), table_name="upload") + op.drop_index(op.f("ix_upload_created_at"), table_name="upload") + op.drop_table("upload") + op.drop_index(op.f("ix_team_member_updated_at"), table_name="team_member") + op.drop_index(op.f("ix_team_member_role"), table_name="team_member") + op.drop_index(op.f("ix_team_member_created_at"), table_name="team_member") + op.drop_table("team_member") + op.drop_index(op.f("ix_team_invitation_updated_at"), table_name="team_invitation") + op.drop_index(op.f("ix_team_invitation_expires_at"), table_name="team_invitation") + op.drop_index(op.f("ix_team_invitation_created_at"), table_name="team_invitation") + op.drop_table("team_invitation") + op.drop_index(op.f("ix_user_account_updated_at"), table_name="user_account") + op.drop_index(op.f("ix_user_account_email"), table_name="user_account") + op.drop_index(op.f("ix_user_account_created_at"), table_name="user_account") + op.drop_table("user_account") + op.drop_index(op.f("ix_team_updated_at"), table_name="team") + op.drop_index(op.f("ix_team_name"), table_name="team") + op.drop_index(op.f("ix_team_created_at"), table_name="team") + op.drop_table("team") + # ### end Alembic commands ### diff --git a/src/app/middleware/__init__.py b/src/app/middleware/__init__.py new file mode 100644 index 00000000..baa7d665 --- /dev/null +++ b/src/app/middleware/__init__.py @@ -0,0 +1,4 @@ +from app.middleware.db import DatabaseSessionMiddleware +from app.middleware.jwt import OAuth2PasswordBearerAuth + +__all__ = ["DatabaseSessionMiddleware", "OAuth2PasswordBearerAuth"] diff --git a/src/pyspa/middleware/db.py b/src/app/middleware/db.py similarity index 97% rename from src/pyspa/middleware/db.py rename to src/app/middleware/db.py index d204b049..7977ba91 100644 --- a/src/pyspa/middleware/db.py +++ b/src/app/middleware/db.py @@ -4,7 +4,7 @@ from starlite import ScopeType from starlite.middleware import MiddlewareProtocol -from pyspa.db import AsyncScopedSession +from app.db import AsyncScopedSession if TYPE_CHECKING: from starlite.types import ASGIApp, Message, Receive, Scope, Send diff --git a/src/pyspa/middleware/jwt.py b/src/app/middleware/jwt.py similarity index 100% rename from src/pyspa/middleware/jwt.py rename to src/app/middleware/jwt.py diff --git a/src/app/models/__init__.py b/src/app/models/__init__.py new file mode 100644 index 00000000..bb9b8512 --- /dev/null +++ b/src/app/models/__init__.py @@ -0,0 +1,7 @@ +# export models here so that are easy to access via `models.*` +from app.models.base import BaseModel, meta +from app.models.team import Team, TeamInvitation, TeamMember, TeamRoles +from app.models.upload import Upload +from app.models.user import User + +__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoles", "Upload"] diff --git a/src/pyspa/models/base.py b/src/app/models/base.py similarity index 93% rename from src/pyspa/models/base.py rename to src/app/models/base.py index a0ec50b4..2fcd554a 100644 --- a/src/pyspa/models/base.py +++ b/src/app/models/base.py @@ -15,7 +15,7 @@ from sqlalchemy.sql import func as sql_func from sqlalchemy.sql.expression import FunctionElement -from pyspa.db import db_types as t +from app.db import db_types as t if TYPE_CHECKING: from typing_extensions import Self @@ -25,7 +25,6 @@ "mapper_registry", "BaseModel", "SlugModelMixin", - "SoftDeleteMixin", "ExpiresAtMixin", "IntegerPrimaryKeyMixin", ] @@ -124,12 +123,6 @@ class SlugModelMixin: slug._creation_order = 2 # type: ignore[attr-defined] # pylint: disable=[protected-access] -@declarative_mixin -class SoftDeleteMixin: - is_deleted: orm.Mapped[bool] = sa.Column(sa.Boolean, index=True, nullable=False, default=False) - is_deleted._creation_order = 999 # type: ignore[attr-defined] # pylint: disable=[protected-access] - - @declarative_mixin class CreatedUpdatedAtMixin: """Created At/Updated At Mixin""" @@ -198,6 +191,3 @@ def find_by_table_name(table_name: str) -> Optional["DatabaseModelType"]: DatabaseModelWithExpiresAtType = TypeVar( # pylint: disable=[invalid-name] "DatabaseModelWithExpiresAtType", bound=ExpiresAtMixin ) -DatabaseModelWithSoftDeleteType = TypeVar( # pylint: disable=[invalid-name] - "DatabaseModelWithSoftDeleteType", bound=SoftDeleteMixin -) diff --git a/src/pyspa/models/team.py b/src/app/models/team.py similarity index 96% rename from src/pyspa/models/team.py rename to src/app/models/team.py index f0f4d330..0b46c5a7 100644 --- a/src/pyspa/models/team.py +++ b/src/app/models/team.py @@ -6,8 +6,8 @@ from pydantic import UUID4, EmailStr from sqlalchemy import orm -from pyspa.db import db_types as t -from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin +from app.db import db_types as t +from app.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin if TYPE_CHECKING: from .upload import Upload diff --git a/src/pyspa/models/upload.py b/src/app/models/upload.py similarity index 93% rename from src/pyspa/models/upload.py rename to src/app/models/upload.py index eedb2a1d..721f9a37 100644 --- a/src/pyspa/models/upload.py +++ b/src/app/models/upload.py @@ -4,7 +4,7 @@ from pydantic import UUID4 from sqlalchemy import orm -from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin +from app.models.base import BaseModel, CreatedUpdatedAtMixin if TYPE_CHECKING: from .team import Team diff --git a/src/pyspa/models/user.py b/src/app/models/user.py similarity index 92% rename from src/pyspa/models/user.py rename to src/app/models/user.py index e4d6a731..64e77e77 100644 --- a/src/pyspa/models/user.py +++ b/src/app/models/user.py @@ -4,8 +4,8 @@ from pydantic import EmailStr from sqlalchemy import orm -from pyspa.db import db_types as t -from pyspa.models.base import BaseModel, CreatedUpdatedAtMixin +from app.db import db_types as t +from app.models.base import BaseModel, CreatedUpdatedAtMixin if TYPE_CHECKING: from .team import TeamMember diff --git a/src/pyspa/py.typed b/src/app/py.typed similarity index 100% rename from src/pyspa/py.typed rename to src/app/py.typed diff --git a/src/app/repositories/__init__.py b/src/app/repositories/__init__.py new file mode 100644 index 00000000..ba85441c --- /dev/null +++ b/src/app/repositories/__init__.py @@ -0,0 +1,18 @@ +from app.repositories.base import BaseRepository +from app.repositories.team import TeamRepository, team +from app.repositories.team_invite import TeamInvitationRepository, team_invite +from app.repositories.upload import UploadRepository, upload +from app.repositories.user import UserRepository, user + +__all__ = [ + "user", + "BaseRepository", + "UserRepository", + "BaseRepository", + "TeamRepository", + "team", + "TeamInvitationRepository", + "team_invite", + "UploadRepository", + "upload", +] diff --git a/src/pyspa/repositories/base.py b/src/app/repositories/base.py similarity index 96% rename from src/pyspa/repositories/base.py rename to src/app/repositories/base.py index f5ab2463..a671fb2d 100644 --- a/src/pyspa/repositories/base.py +++ b/src/app/repositories/base.py @@ -16,14 +16,13 @@ from sqlalchemy.sql import select from sqlalchemy.sql.selectable import TypedReturnsRows -from pyspa.models.base import ( +from app.models.base import ( DatabaseModelType, DatabaseModelWithCreatedUpdatedAtType, DatabaseModelWithExpiresAtType, DatabaseModelWithSlugType, - DatabaseModelWithSoftDeleteType, ) -from pyspa.utils.text import slugify +from app.utils.text import slugify if TYPE_CHECKING: from sqlalchemy import Executable @@ -71,7 +70,7 @@ class RepositoryProtocol(Protocol[DatabaseModelType]): Protocol (_type_): _description_ """ - model: type[DatabaseModelType] + model_type: type[DatabaseModelType] """ A model that extends [`DeclarativeBase`][sqlalchemy.orm.DeclarativeBase]. Must be set by concrete subclasses. """ @@ -177,14 +176,10 @@ async def get_by_slug( ... # pragma: no cover -class SoftDeleteRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSoftDeleteType]): - model: type[DatabaseModelWithSoftDeleteType] - - class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): """Base SQL Alchemy repository.""" - def __init__(self, model: type[DatabaseModelType]): + def __init__(self): """ CRUD object with default methods to create, read, update, delete (CRUD). @@ -192,7 +187,7 @@ def __init__(self, model: type[DatabaseModelType]): * `model`: A SQLAlchemy model class """ - self.model = model + self.model = self.model_type async def count(self, session: "AsyncSession", statement: "Select") -> int: count_statement = statement.with_only_columns( # type: ignore[call-overload] @@ -277,8 +272,7 @@ async def get_by_id( return await self.get_one_or_none(session, statement) async def list(self, session: "AsyncSession", statement: Optional[Select] = None) -> "List[DatabaseModelType]": - if statement is None: - statement = select(self.model).execution_options(populate_existing=True) + statement = statement or select(self.model).execution_options(populate_existing=True) results = await self.execute(session, statement) return [result[0] for result in results.unique().all()] diff --git a/src/pyspa/repositories/team.py b/src/app/repositories/team.py similarity index 52% rename from src/pyspa/repositories/team.py rename to src/app/repositories/team.py index e819c7c7..f7a4f870 100644 --- a/src/pyspa/repositories/team.py +++ b/src/app/repositories/team.py @@ -1,5 +1,5 @@ -from pyspa import models -from pyspa.repositories.base import BaseRepository +from app import models +from app.repositories.base import BaseRepository class TeamRepository(BaseRepository[models.Team]): @@ -9,5 +9,7 @@ class TeamRepository(BaseRepository[models.Team]): BaseRepository (_type_): _description_ """ + model_type = models.Team -team = TeamRepository(model=models.Team) + +team = TeamRepository() diff --git a/src/pyspa/repositories/team_invite.py b/src/app/repositories/team_invite.py similarity index 50% rename from src/pyspa/repositories/team_invite.py rename to src/app/repositories/team_invite.py index 642dce6a..3f4c017d 100644 --- a/src/pyspa/repositories/team_invite.py +++ b/src/app/repositories/team_invite.py @@ -1,5 +1,5 @@ -from pyspa import models -from pyspa.repositories.base import BaseRepository +from app import models +from app.repositories.base import BaseRepository class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): @@ -9,5 +9,7 @@ class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): BaseRepository (_type_): _description_ """ + model_type = models.TeamInvitation -team_invite = TeamInvitationRepository(model=models.TeamInvitation) + +team_invite = TeamInvitationRepository() diff --git a/src/pyspa/repositories/upload.py b/src/app/repositories/upload.py similarity index 51% rename from src/pyspa/repositories/upload.py rename to src/app/repositories/upload.py index 8248e3ab..869e557f 100644 --- a/src/pyspa/repositories/upload.py +++ b/src/app/repositories/upload.py @@ -1,5 +1,5 @@ -from pyspa import models -from pyspa.repositories.base import BaseRepository +from app import models +from app.repositories.base import BaseRepository class UploadRepository(BaseRepository[models.Upload]): @@ -9,5 +9,7 @@ class UploadRepository(BaseRepository[models.Upload]): BaseRepository (_type_): _description_ """ + model_type = models.Upload -upload = UploadRepository(model=models.Upload) + +upload = UploadRepository() diff --git a/src/pyspa/repositories/user.py b/src/app/repositories/user.py similarity index 52% rename from src/pyspa/repositories/user.py rename to src/app/repositories/user.py index 67f1daf2..ae9ca826 100644 --- a/src/pyspa/repositories/user.py +++ b/src/app/repositories/user.py @@ -1,8 +1,9 @@ -from pyspa import models -from pyspa.repositories.base import BaseRepository +from app import models +from app.repositories.base import BaseRepository class UserRepository(BaseRepository[models.User]): + model_type = models.User """_summary_ Args: @@ -10,4 +11,4 @@ class UserRepository(BaseRepository[models.User]): """ -user = UserRepository(model=models.User) +user = UserRepository() diff --git a/src/pyspa/schemas/__init__.py b/src/app/schemas/__init__.py similarity index 57% rename from src/pyspa/schemas/__init__.py rename to src/app/schemas/__init__.py index 7f3554f2..323f08ae 100644 --- a/src/pyspa/schemas/__init__.py +++ b/src/app/schemas/__init__.py @@ -1,10 +1,10 @@ -from pyspa.schemas.base import BaseSchema, CamelizedBaseSchema -from pyspa.schemas.health import SystemHealth -from pyspa.schemas.message import Message -from pyspa.schemas.team import Team, TeamCreate, TeamMember, TeamMemberCreate, TeamMemberUpdate, TeamUpdate -from pyspa.schemas.team_invite import TeamInvitation, TeamInvitationCreate, TeamInvitationUpdate -from pyspa.schemas.upload import Upload, UploadCreate, UploadUpdate -from pyspa.schemas.user import ( +from app.schemas.base import BaseSchema, CamelizedBaseSchema +from app.schemas.health import SystemHealth +from app.schemas.message import Message +from app.schemas.team import Team, TeamCreate, TeamMember, TeamMemberCreate, TeamMemberUpdate, TeamUpdate +from app.schemas.team_invite import TeamInvitation, TeamInvitationCreate, TeamInvitationUpdate +from app.schemas.upload import Upload, UploadCreate, UploadUpdate +from app.schemas.user import ( User, UserCreate, UserLogin, diff --git a/src/pyspa/schemas/base.py b/src/app/schemas/base.py similarity index 97% rename from src/pyspa/schemas/base.py rename to src/app/schemas/base.py index b7061fa1..cacf2794 100644 --- a/src/pyspa/schemas/base.py +++ b/src/app/schemas/base.py @@ -4,7 +4,7 @@ from pydantic import BaseModel as _BaseSchema from pydantic import SecretBytes, SecretStr -from pyspa.utils import serializers +from app.utils import serializers __all__ = ["BaseSchema", "CamelizedBaseSchema"] diff --git a/src/pyspa/schemas/health.py b/src/app/schemas/health.py similarity index 81% rename from src/pyspa/schemas/health.py rename to src/app/schemas/health.py index 81a62ec4..a88d33fb 100644 --- a/src/pyspa/schemas/health.py +++ b/src/app/schemas/health.py @@ -1,5 +1,5 @@ -from pyspa.config import settings -from pyspa.schemas.base import CamelizedBaseSchema +from app.config import settings +from app.schemas.base import CamelizedBaseSchema class SystemHealth(CamelizedBaseSchema): diff --git a/src/pyspa/schemas/message.py b/src/app/schemas/message.py similarity index 51% rename from src/pyspa/schemas/message.py rename to src/app/schemas/message.py index 01135d77..15bf8977 100644 --- a/src/pyspa/schemas/message.py +++ b/src/app/schemas/message.py @@ -1,4 +1,4 @@ -from pyspa.schemas.base import CamelizedBaseSchema +from app.schemas.base import CamelizedBaseSchema class Message(CamelizedBaseSchema): diff --git a/src/pyspa/schemas/team.py b/src/app/schemas/team.py similarity index 92% rename from src/pyspa/schemas/team.py rename to src/app/schemas/team.py index 34b69a2d..9f665a5d 100644 --- a/src/pyspa/schemas/team.py +++ b/src/app/schemas/team.py @@ -4,10 +4,10 @@ from pydantic import UUID4, EmailStr, Field -from pyspa import models -from pyspa.schemas.base import CamelizedBaseSchema -from pyspa.schemas.team_invite import TeamInvitation # noqa: TC002 -from pyspa.schemas.upload import Upload # noqa: TC002 +from app import models +from app.schemas.base import CamelizedBaseSchema +from app.schemas.team_invite import TeamInvitation # noqa: TC002 +from app.schemas.upload import Upload # noqa: TC002 # ################################# # diff --git a/src/pyspa/schemas/team_invite.py b/src/app/schemas/team_invite.py similarity index 90% rename from src/pyspa/schemas/team_invite.py rename to src/app/schemas/team_invite.py index f9da21cf..1095321b 100644 --- a/src/pyspa/schemas/team_invite.py +++ b/src/app/schemas/team_invite.py @@ -3,8 +3,8 @@ from pydantic import UUID4, EmailStr, Field -from pyspa import models -from pyspa.schemas.base import CamelizedBaseSchema +from app import models +from app.schemas.base import CamelizedBaseSchema # Properties to receive via API on creation diff --git a/src/pyspa/schemas/upload.py b/src/app/schemas/upload.py similarity index 91% rename from src/pyspa/schemas/upload.py rename to src/app/schemas/upload.py index f750483a..5dfbd9da 100644 --- a/src/pyspa/schemas/upload.py +++ b/src/app/schemas/upload.py @@ -3,7 +3,7 @@ from pydantic import UUID4, Field -from pyspa.schemas.base import CamelizedBaseSchema +from app.schemas.base import CamelizedBaseSchema class UploadCreate(CamelizedBaseSchema): diff --git a/src/pyspa/schemas/user.py b/src/app/schemas/user.py similarity index 97% rename from src/pyspa/schemas/user.py rename to src/app/schemas/user.py index 38f1ba25..507d6597 100644 --- a/src/pyspa/schemas/user.py +++ b/src/app/schemas/user.py @@ -4,8 +4,8 @@ from pydantic import UUID4, EmailStr, root_validator from pydantic.types import SecretStr -from pyspa import models -from pyspa.schemas.base import CamelizedBaseSchema +from app import models +from app.schemas.base import CamelizedBaseSchema class User(CamelizedBaseSchema): diff --git a/src/app/services/__init__.py b/src/app/services/__init__.py new file mode 100644 index 00000000..e7d2532b --- /dev/null +++ b/src/app/services/__init__.py @@ -0,0 +1,5 @@ +from app.services.team import TeamService, team +from app.services.team_invite import TeamInvitationService, team_invite +from app.services.user import UserService, user + +__all__ = ["user", "UserService", "TeamInvitationService", "TeamService", "team", "team_invite"] diff --git a/src/pyspa/services/base.py b/src/app/services/base.py similarity index 77% rename from src/pyspa/services/base.py rename to src/app/services/base.py index bf0e56bc..cfc94210 100644 --- a/src/pyspa/services/base.py +++ b/src/app/services/base.py @@ -1,17 +1,21 @@ # Standard Library +from dataclasses import dataclass +from datetime import datetime from enum import Enum from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar, Union +from uuid import UUID from pydantic.generics import GenericModel from sqlalchemy import select -from pyspa import models, repositories, schemas +from app import models, repositories, schemas ModelType = TypeVar("ModelType", bound=models.BaseModel) RepositoryType = TypeVar("RepositoryType", bound=repositories.BaseRepository) CreateSchemaType = TypeVar("CreateSchemaType", bound=schemas.BaseSchema) UpdateSchemaType = TypeVar("UpdateSchemaType", bound=schemas.BaseSchema) SchemaType = TypeVar("SchemaType", bound=schemas.BaseSchema) +ParamType = TypeVar("ParamType", bound=float | str | UUID) if TYPE_CHECKING: from pydantic import UUID4 @@ -45,6 +49,46 @@ class PaginatedResults(GenericModel, Generic[SchemaType]): results: list[SchemaType] +@dataclass +class BeforeAfter: + """ + Data required to filter a query on a `datetime` column. + """ + + field_name: str + """Name of the model attribute to filter on.""" + before: datetime | None + """Filter results where field earlier than this [datetime][datetime.datetime]""" + after: datetime | None + """Filter results where field later than this [datetime][datetime.datetime]""" + + +@dataclass +class CollectionFilter(Generic[ParamType]): + """ + Data required to construct a `WHERE ... IN (...)` clause. + """ + + field_name: str + """Name of the model attribute to filter on.""" + values: list[ParamType] | None + """Values for `IN` clause.""" + + +@dataclass +class LimitOffset: + """ + Data required to add limit/offset filtering to a query. + """ + + limit: int + """Value for `LIMIT` clause of query.""" + offset: int + """Value for `OFFSET` clause of query.""" + include_count: bool = False + """Should the result set include the total count of the object""" + + class DataAccessServiceException(Exception): """Base Data access exception type.""" @@ -55,12 +99,10 @@ class DataAccessService(Generic[ModelType, RepositoryType, CreateSchemaType, Upd This class is used to provide a common interface for all CRUD operations. """ - def __init__( - self, - model: type[ModelType], - repository: type[RepositoryType], - default_options: Optional[list[Any]] = None, - ) -> None: + model: type[ModelType] + repository_type: type[RepositoryType] + + def __init__(self, default_options: Optional[list["Any"]] = None) -> None: """ CRUD object with default methods to create, read, update, delete (CRUD). @@ -69,12 +111,12 @@ def __init__( * `model`: A SQLAlchemy model class * `schema`: A Pydantic model (schema) class """ - self.model = model - self.repository = repository(model=model) + + self.repository = self.repository_type() self.default_options = default_options if default_options else [] async def get_by_id( - self, db: "AsyncSession", id: "UUID4", options: Optional[list[Any]] = None + self, db: "AsyncSession", id: "UUID4", options: Optional[list["Any"]] = None ) -> Optional[ModelType]: """ Obtain model instance by `identifier`. @@ -89,6 +131,28 @@ async def get_by_id( db_obj = await self.repository.get_by_id(db, id, options) return db_obj or None + def filter( + self, + id_: UUID | None = None, + id_filter: CollectionFilter[UUID] | None = None, + created_filter: BeforeAfter | None = None, + updated_filter: BeforeAfter | None = None, + limit_offset: LimitOffset | None = None, + **kwargs: Any, + ) -> None: + self.select = select(self.model_type) + if id_: + kwargs.update({self.id_key: id_}) + self.filter_select_by_kwargs(**kwargs) + if id_filter: + self.filter_in_collection(id_filter) + if created_filter: + self.filter_on_datetime_field(created_filter) + if updated_filter: + self.filter_on_datetime_field(updated_filter) + if limit_offset: + self.apply_limit_offset_pagination(limit_offset) + async def get_one_or_none( self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any ) -> Optional[SchemaType]: @@ -164,7 +228,7 @@ async def get( return results, count async def list( - self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any + self, db: "AsyncSession", *args: Any, options: Optional[list[ExecutableOption]] = None, **kwargs: Any ) -> list[ModelType]: """ Obtain a list of model instances diff --git a/src/pyspa/services/health.py b/src/app/services/health.py similarity index 100% rename from src/pyspa/services/health.py rename to src/app/services/health.py diff --git a/src/pyspa/services/team.py b/src/app/services/team.py similarity index 94% rename from src/pyspa/services/team.py rename to src/app/services/team.py index 6ee7cf9c..d7d701c4 100644 --- a/src/pyspa/services/team.py +++ b/src/app/services/team.py @@ -2,8 +2,8 @@ from sqlalchemy import orm, select -from pyspa import models, repositories, schemas -from pyspa.services.base import DataAccessService, DataAccessServiceException +from app import models, repositories, schemas +from app.services.base import DataAccessService, DataAccessServiceException if TYPE_CHECKING: from pydantic import UUID4 diff --git a/src/pyspa/services/team_invite.py b/src/app/services/team_invite.py similarity index 87% rename from src/pyspa/services/team_invite.py rename to src/app/services/team_invite.py index 111237b4..18ba198b 100644 --- a/src/pyspa/services/team_invite.py +++ b/src/app/services/team_invite.py @@ -1,7 +1,7 @@ from sqlalchemy import orm -from pyspa import models, repositories, schemas -from pyspa.services.base import DataAccessService, DataAccessServiceException +from app import models, repositories, schemas +from app.services.base import DataAccessService, DataAccessServiceException class TeamInvitationServiceException(DataAccessServiceException): diff --git a/src/pyspa/services/user.py b/src/app/services/user.py similarity index 93% rename from src/pyspa/services/user.py rename to src/app/services/user.py index 3b9c2929..7d67dead 100644 --- a/src/pyspa/services/user.py +++ b/src/app/services/user.py @@ -3,10 +3,10 @@ from sqlalchemy import orm, select from starlite import NotAuthorizedException -from pyspa import models, repositories, schemas -from pyspa.core import security -from pyspa.services.base import DataAccessService, DataAccessServiceException -from pyspa.services.team_invite import ( +from app import models, repositories, schemas +from app.core import security +from app.services.base import DataAccessService, DataAccessServiceException +from app.services.team_invite import ( TeamInvitationEmailMismatchException, TeamInvitationExpired, TeamInvitationNotFoundException, @@ -26,18 +26,6 @@ class UserNotFoundException(UserServiceException): """_summary_""" -class UserLoginFailedException(UserServiceException): - """_summary_""" - - -class UserInactiveException(UserServiceException): - """_summary_""" - - -class UserPasswordVerifyException(UserServiceException): - """_summary_""" - - class UserService(DataAccessService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate]): """Handles database operations for users""" diff --git a/src/app/utils/__init__.py b/src/app/utils/__init__.py new file mode 100644 index 00000000..36782c0c --- /dev/null +++ b/src/app/utils/__init__.py @@ -0,0 +1,3 @@ +from app.utils import asyncer, db, module_loading, serializers, text + +__all__ = ["db", "asyncer", "module_loading", "text", "serializers"] diff --git a/src/pyspa/utils/asyncer.py b/src/app/utils/asyncer.py similarity index 100% rename from src/pyspa/utils/asyncer.py rename to src/app/utils/asyncer.py diff --git a/src/pyspa/utils/db/__init__.py b/src/app/utils/db/__init__.py similarity index 100% rename from src/pyspa/utils/db/__init__.py rename to src/app/utils/db/__init__.py diff --git a/src/pyspa/utils/db/db_ready.py b/src/app/utils/db/db_ready.py similarity index 100% rename from src/pyspa/utils/db/db_ready.py rename to src/app/utils/db/db_ready.py diff --git a/src/pyspa/utils/module_loading.py b/src/app/utils/module_loading.py similarity index 97% rename from src/pyspa/utils/module_loading.py rename to src/app/utils/module_loading.py index 1db7744d..a8f36ef7 100644 --- a/src/pyspa/utils/module_loading.py +++ b/src/app/utils/module_loading.py @@ -17,7 +17,7 @@ @lru_cache -def module_to_os_path(dotted_path: str = "pyspa") -> Path: +def module_to_os_path(dotted_path: str = "app") -> Path: """ Returns the path to the base directory of the project or the module specified by `dotted_path`. diff --git a/src/pyspa/utils/serializers.py b/src/app/utils/serializers.py similarity index 100% rename from src/pyspa/utils/serializers.py rename to src/app/utils/serializers.py diff --git a/src/pyspa/utils/text/__init__.py b/src/app/utils/text/__init__.py similarity index 100% rename from src/pyspa/utils/text/__init__.py rename to src/app/utils/text/__init__.py diff --git a/src/pyspa/utils/text/slugify.py b/src/app/utils/text/slugify.py similarity index 100% rename from src/pyspa/utils/text/slugify.py rename to src/app/utils/text/slugify.py diff --git a/src/pyspa/version.py b/src/app/version.py similarity index 100% rename from src/pyspa/version.py rename to src/app/version.py diff --git a/src/pyspa/web/__init__.py b/src/app/web/__init__.py similarity index 100% rename from src/pyspa/web/__init__.py rename to src/app/web/__init__.py diff --git a/src/pyspa/web/assets/.gitkeep b/src/app/web/assets/.gitkeep similarity index 100% rename from src/pyspa/web/assets/.gitkeep rename to src/app/web/assets/.gitkeep diff --git a/src/pyspa/web/public/.gitkeep b/src/app/web/public/.gitkeep similarity index 100% rename from src/pyspa/web/public/.gitkeep rename to src/app/web/public/.gitkeep diff --git a/src/app/web/ts/common/TwLitElement.ts b/src/app/web/ts/common/TwLitElement.ts new file mode 100644 index 00000000..96e59d1c --- /dev/null +++ b/src/app/web/ts/common/TwLitElement.ts @@ -0,0 +1,5 @@ +import { LitElement } from "lit"; + +import { TW } from "../util/TailwindMixin"; + +export const TwLitElement = TW(LitElement) \ No newline at end of file diff --git a/src/app/web/ts/components/HelloWorld.ts b/src/app/web/ts/components/HelloWorld.ts new file mode 100644 index 00000000..6873745b --- /dev/null +++ b/src/app/web/ts/components/HelloWorld.ts @@ -0,0 +1,11 @@ +import type { TemplateResult } from "lit"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; +import { TwLitElement } from "../common/TwLitElement"; + +@customElement("x-hello-world") +export class HelloWorld extends TwLitElement { + render(): TemplateResult { + return html` `; + } +} diff --git a/src/pyspa/web/ts/index.html b/src/app/web/ts/index.html similarity index 100% rename from src/pyspa/web/ts/index.html rename to src/app/web/ts/index.html diff --git a/src/app/web/ts/pages/IndexPage.ts b/src/app/web/ts/pages/IndexPage.ts new file mode 100644 index 00000000..13281098 --- /dev/null +++ b/src/app/web/ts/pages/IndexPage.ts @@ -0,0 +1,18 @@ +// Components +import type { TemplateResult } from "lit"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; +import { TwLitElement } from "../common/TwLitElement"; + +import "../components/HelloWorld"; + +@customElement("x-index-page") +export class IndexPage extends TwLitElement { + render(): TemplateResult { + return html` +
+ +
+ `; + } +} diff --git a/src/app/web/ts/styles/tailwind.global.css b/src/app/web/ts/styles/tailwind.global.css new file mode 100644 index 00000000..7b47d05d --- /dev/null +++ b/src/app/web/ts/styles/tailwind.global.css @@ -0,0 +1,9 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { + .btn { + @apply pt-1 pb-1 pl-4 pr-4 text-purple-300 bg-slate-700; + } +} \ No newline at end of file diff --git a/src/app/web/ts/styles/tailwind.global.css.d.ts b/src/app/web/ts/styles/tailwind.global.css.d.ts new file mode 100644 index 00000000..5eccfff5 --- /dev/null +++ b/src/app/web/ts/styles/tailwind.global.css.d.ts @@ -0,0 +1,2 @@ +declare var style: string +export default style \ No newline at end of file diff --git a/src/app/web/ts/util/TailwindMixin.ts b/src/app/web/ts/util/TailwindMixin.ts new file mode 100644 index 00000000..5ed7cd5f --- /dev/null +++ b/src/app/web/ts/util/TailwindMixin.ts @@ -0,0 +1,19 @@ +import { adoptStyles, LitElement, unsafeCSS } from 'lit' + +import style from '../styles/tailwind.global.css' + +declare global { + /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ + export type LitMixin = new (...args: any[]) => T & LitElement; +} + + +const stylesheet = unsafeCSS(style) + +export const TW = (superClass: T): T => + class extends superClass { + connectedCallback() { + super.connectedCallback(); + adoptStyles(this.shadowRoot, [stylesheet]) + } + }; \ No newline at end of file diff --git a/src/pyspa/cli/__init__.py b/src/pyspa/cli/__init__.py deleted file mode 100644 index bd927718..00000000 --- a/src/pyspa/cli/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from pyspa.cli import commands -from pyspa.cli.app import cli -from pyspa.cli.console import console - -__all__ = ["cli", "commands", "console"] diff --git a/src/pyspa/cli/commands/__init__.py b/src/pyspa/cli/commands/__init__.py deleted file mode 100644 index c5dcb130..00000000 --- a/src/pyspa/cli/commands/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from pyspa.cli.commands import manage, run - -__all__ = ["manage", "run"] diff --git a/src/pyspa/config/__init__.py b/src/pyspa/config/__init__.py deleted file mode 100644 index dadaa2de..00000000 --- a/src/pyspa/config/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from pyspa.config import paths -from pyspa.config.application import settings -from pyspa.config.logging import log_config - -__all__ = ["settings", "log_config", "paths"] diff --git a/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py b/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py deleted file mode 100644 index f8a7a2a8..00000000 --- a/src/pyspa/db/migrations/versions/2022-09-15_e5c9c377ddce.py +++ /dev/null @@ -1,146 +0,0 @@ -# type: ignore -""" - -Revision ID: e5c9c377ddce -Revises: -Create Date: 2022-09-15 12:20:30.527673 - -""" -import sqlalchemy as sa -from alembic import op -from sqlalchemy.dialects import postgresql - -from pyspa.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime - - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - -# revision identifiers, used by Alembic. -revision = 'e5c9c377ddce' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('team', - sa.Column('name', sa.String(length=255), nullable=False), - sa.Column('description', sa.String(length=500), nullable=True), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team')), - sa.UniqueConstraint('id', name=op.f('uq_team_id')) - ) - op.create_index(op.f('ix_team_created_at'), 'team', ['created_at'], unique=False) - op.create_index(op.f('ix_team_name'), 'team', ['name'], unique=False) - op.create_index(op.f('ix_team_updated_at'), 'team', ['updated_at'], unique=False) - op.create_table('user_account', - sa.Column('full_name', sa.String(length=255), nullable=True), - sa.Column('email', sa.EmailString(length=255), nullable=False), - sa.Column('hashed_password', sa.String(length=255), nullable=True), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('is_superuser', sa.Boolean(), nullable=False), - sa.Column('is_verified', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_user_account')), - sa.UniqueConstraint('id', name=op.f('uq_user_account_id')), - comment='User accounts for application access' - ) - op.create_index(op.f('ix_user_account_created_at'), 'user_account', ['created_at'], unique=False) - op.create_index(op.f('ix_user_account_email'), 'user_account', ['email'], unique=True) - op.create_index(op.f('ix_user_account_updated_at'), 'user_account', ['updated_at'], unique=False) - op.create_table('team_invitation', - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('email', sa.EmailString(length=255), nullable=False), - sa.Column('role', sa.String(length=50), nullable=False), - sa.Column('is_accepted', sa.Boolean(), nullable=True), - sa.Column('invited_by_id', sa.GUID(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.Column('expires_at', sa.TimestampAwareDateTime(timezone=True), nullable=False), - sa.ForeignKeyConstraint(['invited_by_id'], ['user_account.id'], name=op.f('fk_team_invitation_invited_by_id_user_account')), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_invitation_team_id_team')), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team_invitation')), - sa.UniqueConstraint('id', name=op.f('uq_team_invitation_id')) - ) - op.create_index(op.f('ix_team_invitation_created_at'), 'team_invitation', ['created_at'], unique=False) - op.create_index(op.f('ix_team_invitation_expires_at'), 'team_invitation', ['expires_at'], unique=False) - op.create_index(op.f('ix_team_invitation_updated_at'), 'team_invitation', ['updated_at'], unique=False) - op.create_table('team_member', - sa.Column('user_id', sa.GUID(), nullable=False), - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('role', sa.String(length=50), nullable=False), - sa.Column('is_owner', sa.Boolean(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_member_team_id_team')), - sa.ForeignKeyConstraint(['user_id'], ['user_account.id'], name=op.f('fk_team_member_user_id_user_account')), - sa.PrimaryKeyConstraint('id', name=op.f('pk_team_member')), - sa.UniqueConstraint('id', name=op.f('uq_team_member_id')), - sa.UniqueConstraint('user_id', 'team_id', name=op.f('uq_team_member_user_id')) - ) - op.create_index(op.f('ix_team_member_created_at'), 'team_member', ['created_at'], unique=False) - op.create_index(op.f('ix_team_member_role'), 'team_member', ['role'], unique=False) - op.create_index(op.f('ix_team_member_updated_at'), 'team_member', ['updated_at'], unique=False) - op.create_table('upload', - sa.Column('file_name', sa.String(length=255), nullable=True), - sa.Column('uploaded_by', sa.String(length=255), nullable=True), - sa.Column('is_processed', sa.Boolean(), nullable=False), - sa.Column('team_id', sa.GUID(), nullable=False), - sa.Column('id', sa.GUID(), nullable=False), - sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), - sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), - sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_upload_team_id_team'), ondelete='cascade'), - sa.PrimaryKeyConstraint('id', name=op.f('pk_upload')), - sa.UniqueConstraint('id', name=op.f('uq_upload_id')), - comment='Stores links to uploaded files' - ) - op.create_index(op.f('ix_upload_created_at'), 'upload', ['created_at'], unique=False) - op.create_index(op.f('ix_upload_file_name'), 'upload', ['file_name'], unique=False) - op.create_index(op.f('ix_upload_is_processed'), 'upload', ['is_processed'], unique=False) - op.create_index(op.f('ix_upload_updated_at'), 'upload', ['updated_at'], unique=False) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_upload_updated_at'), table_name='upload') - op.drop_index(op.f('ix_upload_is_processed'), table_name='upload') - op.drop_index(op.f('ix_upload_file_name'), table_name='upload') - op.drop_index(op.f('ix_upload_created_at'), table_name='upload') - op.drop_table('upload') - op.drop_index(op.f('ix_team_member_updated_at'), table_name='team_member') - op.drop_index(op.f('ix_team_member_role'), table_name='team_member') - op.drop_index(op.f('ix_team_member_created_at'), table_name='team_member') - op.drop_table('team_member') - op.drop_index(op.f('ix_team_invitation_updated_at'), table_name='team_invitation') - op.drop_index(op.f('ix_team_invitation_expires_at'), table_name='team_invitation') - op.drop_index(op.f('ix_team_invitation_created_at'), table_name='team_invitation') - op.drop_table('team_invitation') - op.drop_index(op.f('ix_user_account_updated_at'), table_name='user_account') - op.drop_index(op.f('ix_user_account_email'), table_name='user_account') - op.drop_index(op.f('ix_user_account_created_at'), table_name='user_account') - op.drop_table('user_account') - op.drop_index(op.f('ix_team_updated_at'), table_name='team') - op.drop_index(op.f('ix_team_name'), table_name='team') - op.drop_index(op.f('ix_team_created_at'), table_name='team') - op.drop_table('team') - # ### end Alembic commands ### diff --git a/src/pyspa/middleware/__init__.py b/src/pyspa/middleware/__init__.py deleted file mode 100644 index b8cdd422..00000000 --- a/src/pyspa/middleware/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from pyspa.middleware.db import DatabaseSessionMiddleware -from pyspa.middleware.jwt import OAuth2PasswordBearerAuth - -__all__ = ["DatabaseSessionMiddleware", "OAuth2PasswordBearerAuth"] diff --git a/src/pyspa/models/__init__.py b/src/pyspa/models/__init__.py deleted file mode 100644 index a0a1891d..00000000 --- a/src/pyspa/models/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# export models here so that are easy to access via `models.*` -from pyspa.models.base import BaseModel, meta -from pyspa.models.team import Team, TeamInvitation, TeamMember, TeamRoles -from pyspa.models.upload import Upload -from pyspa.models.user import User - -__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoles", "Upload"] diff --git a/src/pyspa/repositories/__init__.py b/src/pyspa/repositories/__init__.py deleted file mode 100644 index 94e3473f..00000000 --- a/src/pyspa/repositories/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -from pyspa.repositories.base import BaseRepository -from pyspa.repositories.team import TeamRepository, team -from pyspa.repositories.team_invite import TeamInvitationRepository, team_invite -from pyspa.repositories.upload import UploadRepository, upload -from pyspa.repositories.user import UserRepository, user - -__all__ = [ - "user", - "BaseRepository", - "UserRepository", - "BaseRepository", - "TeamRepository", - "team", - "TeamInvitationRepository", - "team_invite", - "UploadRepository", - "upload", -] diff --git a/src/pyspa/services/__init__.py b/src/pyspa/services/__init__.py deleted file mode 100644 index 96a1ded8..00000000 --- a/src/pyspa/services/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from pyspa.services.team import TeamService, team -from pyspa.services.team_invite import TeamInvitationService, team_invite -from pyspa.services.user import UserService, user - -__all__ = ["user", "UserService", "TeamInvitationService", "TeamService", "team", "team_invite"] diff --git a/src/pyspa/utils/__init__.py b/src/pyspa/utils/__init__.py deleted file mode 100644 index 333e4ba2..00000000 --- a/src/pyspa/utils/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from pyspa.utils import asyncer, db, module_loading, serializers, text - -__all__ = ["db", "asyncer", "module_loading", "text", "serializers"] diff --git a/tsconfig.node.json b/tsconfig.node.json index 9d31e2ae..491ac44e 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,9 +1,32 @@ { "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true + "target": "es2019", + "module": "es2020", + "lib": ["es2020", "DOM", "DOM.Iterable"], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "inlineSources": true, + "outDir": "./", + "rootDir": "./src", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitThis": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "noImplicitOverride": true, + "plugins": [ + { + "name": "ts-lit-plugin", + "strict": true + } + ] }, - "include": ["vite.config.ts"] + "include": ["vite.config.ts","src/app/web/ts/**/*.ts"] } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..ac47b29a --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5065 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@11ty/dependency-tree@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz#b3c8fa6c91c4a29257e70dd19d26cca75cde89d2" + integrity sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg== + +"@11ty/eleventy-plugin-syntaxhighlight@>=4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz#742fb1910c5f04d76421c6c95c38804b54155fc1" + integrity sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ== + dependencies: + linkedom "^0.13.2" + prismjs "^1.26.0" + +"@11ty/eleventy-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz#e89dc94b475284e5003525db5078663c5087db82" + integrity sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w== + dependencies: + normalize-path "^3.0.0" + +"@11ty/eleventy@>=1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@11ty/eleventy/-/eleventy-1.0.2.tgz#e8dace170a2dd377fb40465b337bb5f0d17ce6bd" + integrity sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ== + dependencies: + "@11ty/dependency-tree" "^2.0.1" + "@11ty/eleventy-utils" "^1.0.1" + "@iarna/toml" "^2.2.5" + "@sindresorhus/slugify" "^1.1.2" + browser-sync "^2.27.10" + chokidar "^3.5.3" + cross-spawn "^7.0.3" + debug "^4.3.4" + dependency-graph "^0.11.0" + ejs "^3.1.8" + fast-glob "^3.2.11" + graceful-fs "^4.2.10" + gray-matter "^4.0.3" + hamljs "^0.6.2" + handlebars "^4.7.7" + is-glob "^4.0.3" + kleur "^4.1.5" + liquidjs "^9.40.0" + lodash "^4.17.21" + luxon "^2.5.0" + markdown-it "^12.3.2" + minimist "^1.2.6" + moo "^0.5.1" + multimatch "^5.0.0" + mustache "^4.2.0" + normalize-path "^3.0.0" + nunjucks "^3.2.3" + path-to-regexp "^6.2.1" + please-upgrade-node "^3.2.0" + pretty "^2.0.0" + pug "^3.0.2" + recursive-copy "^2.0.14" + semver "^7.3.7" + slugify "^1.6.5" + +"@babel/code-frame@^7.12.11": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.6.0", "@babel/parser@^7.9.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" + integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== + +"@babel/runtime@^7.10.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/types@^7.6.1", "@babel/types@^7.9.6": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@custom-elements-manifest/analyzer@>=0.6.3": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz#b8814683990cfff4a93c639aa4aadd0ea500cc55" + integrity sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig== + dependencies: + "@custom-elements-manifest/find-dependencies" "^0.0.5" + "@web/config-loader" "0.1.3" + chokidar "3.5.2" + command-line-args "5.1.2" + comment-parser "1.2.4" + custom-elements-manifest "1.0.0" + debounce "1.2.1" + globby "11.0.4" + typescript "~4.3.2" + +"@custom-elements-manifest/find-dependencies@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz#ebc11672019de3d52bb8f29f76efe510b8401fbd" + integrity sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg== + dependencies: + es-module-lexer "^0.9.3" + +"@esbuild/android-arm@0.15.9": + version "0.15.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.9.tgz#7e1221604ab88ed5021ead74fa8cca4405e1e431" + integrity sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ== + +"@esbuild/linux-loong64@0.15.9": + version "0.15.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz#b658a97babf1f40783354af7039b84c3fdfc3fc3" + integrity sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA== + +"@eslint/eslintrc@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.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" + +"@esm-bundle/chai@^4.3.4-fix.0": + version "4.3.4-fix.0" + resolved "https://registry.yarnpkg.com/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz#3084cff7eb46d741749f47f3a48dbbdcbaf30a92" + integrity sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw== + dependencies: + "@types/chai" "^4.2.12" + +"@humanwhocodes/config-array@^0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.5.tgz#bb679745224745fff1e9a41961c1d45a49f81c04" + integrity sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + +"@lit/reactive-element@^1.0.0", "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.4.1.tgz#3f587eec5708692135bc9e94cf396130604979f3" + integrity sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@open-wc/chai-dom-equals@^0.12.36": + version "0.12.36" + resolved "https://registry.yarnpkg.com/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz#ed0eb56b9e98c4d7f7280facce6215654aae9f4c" + integrity sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA== + dependencies: + "@open-wc/semantic-dom-diff" "^0.13.16" + "@types/chai" "^4.1.7" + +"@open-wc/dedupe-mixin@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz#5c1a1eeb0386b344290ebe3f1fca0c4869933dbf" + integrity sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q== + +"@open-wc/scoped-elements@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz#c4f06fa16091c6ebf2a69b3f40afc03821f42535" + integrity sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw== + dependencies: + "@lit/reactive-element" "^1.0.0" + "@open-wc/dedupe-mixin" "^1.3.0" + +"@open-wc/semantic-dom-diff@^0.13.16": + version "0.13.21" + resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz#718b9ec5f9a98935fc775e577ad094ae8d8b7dea" + integrity sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg== + +"@open-wc/semantic-dom-diff@^0.19.7": + version "0.19.7" + resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz#92361f0d2dcb54a8d5cf11d5ea40b8e7ffa58eb4" + integrity sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA== + dependencies: + "@types/chai" "^4.3.1" + "@web/test-runner-commands" "^0.6.1" + +"@open-wc/testing-helpers@^2.1.2": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz#85a133ac8637ed1d880d523b07650788eab4a128" + integrity sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w== + dependencies: + "@open-wc/scoped-elements" "^2.1.3" + lit "^2.0.0" + lit-html "^2.0.0" + +"@open-wc/testing@>=3.1.5": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-3.1.6.tgz#89f71710e5530d74f0c478b0a9239d68dcdb9f5e" + integrity sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ== + dependencies: + "@esm-bundle/chai" "^4.3.4-fix.0" + "@open-wc/chai-dom-equals" "^0.12.36" + "@open-wc/semantic-dom-diff" "^0.19.7" + "@open-wc/testing-helpers" "^2.1.2" + "@types/chai" "^4.2.11" + "@types/chai-dom" "^0.0.12" + "@types/sinon-chai" "^3.2.3" + chai-a11y-axe "^1.3.2" + +"@sindresorhus/slugify@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.2.tgz#c2c0129298b8caace2d9156176fe244d0e83156c" + integrity sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA== + dependencies: + "@sindresorhus/transliterate" "^0.1.1" + escape-string-regexp "^4.0.0" + +"@sindresorhus/transliterate@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz#ffce368271d153550e87de81486004f2637425af" + integrity sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w== + dependencies: + escape-string-regexp "^2.0.0" + lodash.deburr "^4.1.0" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + +"@types/accepts@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + +"@types/babel__code-frame@^7.0.2": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz#eda94e1b7c9326700a4b69c485ebbc9498a0b63f" + integrity sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/chai-dom@^0.0.12": + version "0.0.12" + resolved "https://registry.yarnpkg.com/@types/chai-dom/-/chai-dom-0.0.12.tgz#fdd7a52bed4dd235ed1c94d3d2d31d4e7db1d03a" + integrity sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.1.7", "@types/chai@^4.2.11", "@types/chai@^4.2.12", "@types/chai@^4.3.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" + integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== + +"@types/co-body@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/co-body/-/co-body-6.1.0.tgz#b52625390eb0d113c9b697ea92c3ffae7740cdb9" + integrity sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w== + dependencies: + "@types/node" "*" + "@types/qs" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" + integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== + +"@types/convert-source-map@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/convert-source-map/-/convert-source-map-1.5.2.tgz#318dc22d476632a4855594c16970c6dc3ed086e7" + integrity sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg== + +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cookies@*": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/cors@^2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/debounce@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.2.1.tgz#79b65710bc8b6d44094d286aecf38e44f9627852" + integrity sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA== + +"@types/express-serve-static-core@^4.17.18": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.14" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-assert@*": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== + +"@types/http-errors@*": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.2.tgz#7315b4c4c54f82d13fa61c228ec5c2ea5cc9e0e1" + integrity sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== + +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@^2.11.6": + version "2.13.5" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.5.tgz#64b3ca4d54e08c0062e89ec666c9f45443b21a61" + integrity sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*", "@types/node@>=10.0.0": + version "18.7.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.20.tgz#d9442de7b5cb166476340b4271b15300fe058a39" + integrity sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ== + +"@types/parse5@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/sinon-chai@^3.2.3": + version "3.2.8" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" + integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== + dependencies: + "@types/chai" "*" + "@types/sinon" "*" + +"@types/sinon@*": + version "10.0.13" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" + integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" + integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== + +"@types/trusted-types@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + +"@types/ws@^7.4.0": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@>=5.25.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" + integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== + dependencies: + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/type-utils" "5.38.0" + "@typescript-eslint/utils" "5.38.0" + debug "^4.3.4" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@>=5.25.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" + integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== + dependencies: + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/typescript-estree" "5.38.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" + integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== + dependencies: + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/visitor-keys" "5.38.0" + +"@typescript-eslint/type-utils@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" + integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== + dependencies: + "@typescript-eslint/typescript-estree" "5.38.0" + "@typescript-eslint/utils" "5.38.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" + integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== + +"@typescript-eslint/typescript-estree@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" + integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== + dependencies: + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/visitor-keys" "5.38.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" + integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/typescript-estree" "5.38.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" + integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== + dependencies: + "@typescript-eslint/types" "5.38.0" + eslint-visitor-keys "^3.3.0" + +"@web/browser-logs@^0.2.1": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@web/browser-logs/-/browser-logs-0.2.5.tgz#0895efb641eacb0fbc1138c6092bd18c01df2734" + integrity sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg== + dependencies: + errorstacks "^2.2.0" + +"@web/config-loader@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" + integrity sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ== + dependencies: + semver "^7.3.4" + +"@web/dev-server-core@^0.3.18": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.19.tgz#b61f9a0b92351371347a758b30ba19e683c72e94" + integrity sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA== + dependencies: + "@types/koa" "^2.11.6" + "@types/ws" "^7.4.0" + "@web/parse5-utils" "^1.2.0" + chokidar "^3.4.3" + clone "^2.1.2" + es-module-lexer "^1.0.0" + get-stream "^6.0.0" + is-stream "^2.0.0" + isbinaryfile "^4.0.6" + koa "^2.13.0" + koa-etag "^4.0.0" + koa-send "^5.0.1" + koa-static "^5.0.0" + lru-cache "^6.0.0" + mime-types "^2.1.27" + parse5 "^6.0.1" + picomatch "^2.2.2" + ws "^7.4.2" + +"@web/parse5-utils@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" + integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg== + dependencies: + "@types/parse5" "^6.0.1" + parse5 "^6.0.1" + +"@web/test-runner-commands@^0.6.1": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz#69a2a06b52fd9d329f9cf1e172cd8fb1d5ffc521" + integrity sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg== + dependencies: + "@web/test-runner-core" "^0.10.27" + mkdirp "^1.0.4" + +"@web/test-runner-core@^0.10.27": + version "0.10.27" + resolved "https://registry.yarnpkg.com/@web/test-runner-core/-/test-runner-core-0.10.27.tgz#8d1430f2364fb36b3ac15b9b43034fae9d94e177" + integrity sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA== + dependencies: + "@babel/code-frame" "^7.12.11" + "@types/babel__code-frame" "^7.0.2" + "@types/co-body" "^6.1.0" + "@types/convert-source-map" "^1.5.1" + "@types/debounce" "^1.2.0" + "@types/istanbul-lib-coverage" "^2.0.3" + "@types/istanbul-reports" "^3.0.0" + "@web/browser-logs" "^0.2.1" + "@web/dev-server-core" "^0.3.18" + chokidar "^3.4.3" + cli-cursor "^3.1.0" + co-body "^6.1.0" + convert-source-map "^1.7.0" + debounce "^1.2.0" + dependency-graph "^0.11.0" + globby "^11.0.1" + ip "^1.1.5" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.0.2" + log-update "^4.0.0" + nanocolors "^0.2.1" + nanoid "^3.1.25" + open "^8.0.2" + picomatch "^2.2.2" + source-map "^0.7.3" + +a-sync-waterfall@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" + integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== + +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@^1.3.5, accepts@~1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-back@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^6.1.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" + integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.3, asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assert-never@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" + integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + integrity sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ== + +async@^2.6.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@>=10.4.2: + version "10.4.12" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.12.tgz#183f30bf0b0722af54ee5ef257f7d4320bb33129" + integrity sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q== + dependencies: + browserslist "^4.21.4" + caniuse-lite "^1.0.30001407" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axe-core@^4.3.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== + +axios@0.21.4: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +babel-walk@3.0.0-canary-5: + version "3.0.0-canary-5" + resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" + integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== + dependencies: + "@babel/types" "^7.9.6" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-sync-client@^2.27.10: + version "2.27.10" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.27.10.tgz#f06233ea66bd873b96664f001cbc49035022634d" + integrity sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ== + dependencies: + etag "1.8.1" + fresh "0.5.2" + mitt "^1.1.3" + rxjs "^5.5.6" + typescript "^4.6.2" + +browser-sync-ui@^2.27.10: + version "2.27.10" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz#59dd6e436e17b743c99094ff5129306ab7ab5b79" + integrity sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw== + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1" + immutable "^3" + server-destroy "1.0.1" + socket.io-client "^4.4.1" + stream-throttle "^0.1.3" + +browser-sync@^2.27.10: + version "2.27.10" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.27.10.tgz#3568d4f66afb0f68fee4a10902ecbbe8b2f680dd" + integrity sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw== + dependencies: + browser-sync-client "^2.27.10" + browser-sync-ui "^2.27.10" + bs-recipes "1.3.4" + bs-snippet-injector "^2.0.1" + chokidar "^3.5.1" + connect "3.6.6" + connect-history-api-fallback "^1" + dev-ip "^1.0.1" + easy-extender "^2.3.4" + eazy-logger "3.1.0" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "^1.18.1" + immutable "^3" + localtunnel "^2.0.1" + micromatch "^4.0.2" + opn "5.3.0" + portscanner "2.2.0" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + send "0.16.2" + serve-index "1.9.1" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "^4.4.1" + ua-parser-js "1.0.2" + yargs "^17.3.1" + +browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + integrity sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw== + +bs-snippet-injector@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" + integrity sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407: + version "1.0.30001411" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz#303c8594ca5903b193a6d875ac613548cb73379a" + integrity sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g== + +chai-a11y-axe@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz#e584af967727a8656e27c32e845f5db21f2bf2e0" + integrity sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw== + dependencies: + axe-core "^4.3.3" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-parser@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== + dependencies: + is-regex "^1.0.3" + +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + 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" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.4.3, chokidar@^3.5.1, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + 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" + optionalDependencies: + fsevents "~2.3.2" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +co-body@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.1.0.tgz#d87a8efc3564f9bfe3aced8ef5cd04c7a8766547" + integrity sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ== + dependencies: + inflation "^2.0.0" + qs "^6.5.2" + raw-body "^2.3.3" + type-is "^1.6.16" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +command-line-args@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.2.tgz#25908e573d2214bc23a8437e3df853b02dffa425" + integrity sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA== + dependencies: + array-back "^6.1.2" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +commander@^2.19.0, commander@^2.2.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +comment-parser@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" + integrity sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + integrity sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg== + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" + +config-chain@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +connect-history-api-fallback@^1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +constantinople@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" + integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== + dependencies: + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.1" + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookies@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" + integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-select@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +custom-elements-manifest@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz#b35c2129076a1dc9f95d720c6f7b5b71a857274b" + integrity sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A== + +debounce@1.2.1, debounce@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== + +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + dependencies: + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" + +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + integrity sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A== + +didyoumean2@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/didyoumean2/-/didyoumean2-4.1.0.tgz#f813cb7c82c249443e599be077f76e88f24b85e4" + integrity sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig== + dependencies: + "@babel/runtime" "^7.10.2" + leven "^3.1.0" + lodash.deburr "^4.1.0" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +doctypes@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +easy-extender@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" + integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== + dependencies: + lodash "^4.17.10" + +eazy-logger@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" + integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== + dependencies: + tfunk "^4.0.0" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.251: + version "1.4.261" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz#31f14ad60c6f95bec404a77a2fd5e1962248e112" + integrity sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@^1.0.2, encodeurl@~1.0.1, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +engine.io-client@~6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.2.2.tgz#c6c5243167f5943dcd9c4abee1bfc634aa2cbdd0" + integrity sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.0.3" + ws "~8.2.3" + xmlhttprequest-ssl "~2.0.0" + +engine.io-parser@~5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" + integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== + +engine.io@~6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0" + integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.0.3" + ws "~8.2.3" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +errno@^0.1.2: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +errorstacks@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/errorstacks/-/errorstacks-2.4.0.tgz#2155674dd9e741aacda3f3b8b967d9c40a4a0baf" + integrity sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ== + +es-module-lexer@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-module-lexer@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.0.3.tgz#f0d8d35b36d13024110000d5e6fadc8eeaeb66b8" + integrity sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw== + +esbuild-android-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz#4a7eb320ca8d3a305f14792061fd9614ccebb7c0" + integrity sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw== + +esbuild-android-arm64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz#c948e5686df20857ad361ec67e070d40d7cab985" + integrity sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg== + +esbuild-darwin-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz#25f564fa4b39c1cec84dc46bce5634fdbce1d5e4" + integrity sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ== + +esbuild-darwin-arm64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz#60faea3ed95d15239536aa88d06bb82b29278a86" + integrity sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw== + +esbuild-freebsd-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz#0339ef1c90a919175e7816788224517896657a0e" + integrity sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A== + +esbuild-freebsd-arm64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz#32abfc0be3ae3dd38e5a86a9beadbbcf592f1b57" + integrity sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA== + +esbuild-linux-32@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz#93581348a4da7ed2b29bc5539f2605ad7fcee77b" + integrity sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg== + +esbuild-linux-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz#0d171e7946c95d0d3ed4826026af2c5632d7dcc4" + integrity sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ== + +esbuild-linux-arm64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz#9838795a3720cbe736d3bc20621bd366eac22f24" + integrity sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ== + +esbuild-linux-arm@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz#dce96cd817bc7376f6af3967649c4ab1f2f79506" + integrity sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ== + +esbuild-linux-mips64le@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz#0335a0739e61aa97cb9b4a018e3facfcca9cdcfd" + integrity sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw== + +esbuild-linux-ppc64le@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz#18482afb95b8a705e2da0a59d7131bff221281f9" + integrity sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw== + +esbuild-linux-riscv64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz#03b6f9708272c117006b9ce1c9ae8aab91b5a5b6" + integrity sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA== + +esbuild-linux-s390x@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz#65fb645623d575780f155f0ee52935e62f9cca4f" + integrity sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw== + +esbuild-netbsd-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz#7894297bb9e11f3d2f6f31efecd1be4e181f0d54" + integrity sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw== + +esbuild-openbsd-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz#0f9d4c6b6772ae50d491d68ad4cc028300dda7c0" + integrity sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A== + +esbuild-sunos-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz#c32b7ce574b08f814de810ce7c1e34b843768126" + integrity sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ== + +esbuild-windows-32@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz#37a8f7cfccdb2177cd46613a1a1e1fcb419d36df" + integrity sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA== + +esbuild-windows-64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz#5fe1e76fc13dd7f520febecaea110b6f1649c7b2" + integrity sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg== + +esbuild-windows-arm64@0.15.9: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz#98504428f7ba7d2cfc11940be68ee1139173fdce" + integrity sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA== + +esbuild@^0.15.6: + version "0.15.9" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.9.tgz#33fb18b67b85004b6f7616bec955ca4b3e58935d" + integrity sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg== + optionalDependencies: + "@esbuild/android-arm" "0.15.9" + "@esbuild/linux-loong64" "0.15.9" + esbuild-android-64 "0.15.9" + esbuild-android-arm64 "0.15.9" + esbuild-darwin-64 "0.15.9" + esbuild-darwin-arm64 "0.15.9" + esbuild-freebsd-64 "0.15.9" + esbuild-freebsd-arm64 "0.15.9" + esbuild-linux-32 "0.15.9" + esbuild-linux-64 "0.15.9" + esbuild-linux-arm "0.15.9" + esbuild-linux-arm64 "0.15.9" + esbuild-linux-mips64le "0.15.9" + esbuild-linux-ppc64le "0.15.9" + esbuild-linux-riscv64 "0.15.9" + esbuild-linux-s390x "0.15.9" + esbuild-netbsd-64 "0.15.9" + esbuild-openbsd-64 "0.15.9" + esbuild-sunos-64 "0.15.9" + esbuild-windows-32 "0.15.9" + esbuild-windows-64 "0.15.9" + esbuild-windows-arm64 "0.15.9" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-plugin-lit@>=1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz#e1f51fe9e580d4095b58cc4bc4dc6b44409af6b0" + integrity sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ== + dependencies: + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + requireindex "^1.2.0" + +eslint-plugin-wc@>=1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz#8e3785221851c4c226f6a5411f566b1bd7de33f3" + integrity sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw== + dependencies: + is-valid-element-name "^1.0.0" + js-levenshtein-esm "^1.2.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@>=8.8.0: + version "8.24.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" + integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== + dependencies: + "@eslint/eslintrc" "^1.3.2" + "@humanwhocodes/config-array" "^0.10.5" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + 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.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + 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.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-sdsl "^4.1.4" + 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.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@1.8.1, etag@^1.8.1, etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.2, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + 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" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw== + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2, fresh@^0.5.2, fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +glob@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@11.0.4: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.1, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + 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" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +hamljs@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/hamljs/-/hamljs-0.6.2.tgz#7b7116cf6dbe7278e42b3f6ef8725a33e177c8e3" + integrity sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg== + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-escaper@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6" + integrity sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ== + +htmlparser2@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^5.1.4, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immutable@^3: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflation@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" + integrity sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-expression@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" + integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== + dependencies: + acorn "^7.1.1" + object-assign "^4.1.1" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== + dependencies: + lodash.isfinite "^3.3.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-promise@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.0.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-valid-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz#26ef3fd76cdf1f122d105406e32d35b0de005981" + integrity sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw== + dependencies: + is-potential-custom-element-name "^1.0.0" + +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^4.0.6: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +istanbul-lib-coverage@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-reports@^3.0.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +js-beautify@^1.6.12: + version "1.14.6" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.6.tgz#b23ca5d74a462c282c7711bb51150bcc97f2b507" + integrity sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw== + dependencies: + config-chain "^1.1.13" + editorconfig "^0.15.3" + glob "^8.0.3" + nopt "^6.0.0" + +js-levenshtein-esm@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz#96532c34e0c90df198c9419963c64ca3cf43ae92" + integrity sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ== + +js-sdsl@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6" + integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw== + +js-stringify@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w== + optionalDependencies: + graceful-fs "^4.1.6" + +jstransformer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== + dependencies: + is-promise "^2.0.0" + promise "^7.0.1" + +junk@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" + integrity sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w== + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-etag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" + integrity sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg== + dependencies: + etag "^1.8.1" + +koa-send@^5.0.0, koa-send@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" + integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== + dependencies: + debug "^4.1.1" + http-errors "^1.7.3" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + +koa@^2.13.0: + version "2.13.4" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.4.tgz#ee5b0cb39e0b8069c38d115139c774833d32462e" + integrity sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.8.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + +limiter@^1.0.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== + +linkedom@^0.13.2: + version "0.13.7" + resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.13.7.tgz#5d5584e73415911ac387a2794acd61933699e477" + integrity sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg== + dependencies: + css-select "^4.2.1" + cssom "^0.5.0" + html-escaper "^3.0.3" + htmlparser2 "^7.2.0" + uhyphen "^0.1.0" + +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + +liquidjs@^9.40.0: + version "9.42.0" + resolved "https://registry.yarnpkg.com/liquidjs/-/liquidjs-9.42.0.tgz#e0d98730c0bf410320970c6046c819716de90fd1" + integrity sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow== + +lit-analyzer@>=0.0.6: + version "1.2.1" + resolved "https://registry.yarnpkg.com/lit-analyzer/-/lit-analyzer-1.2.1.tgz#725331a4019ae870dd631d4dd709d39a237161ea" + integrity sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg== + dependencies: + chalk "^2.4.2" + didyoumean2 "4.1.0" + fast-glob "^2.2.6" + parse5 "5.1.0" + ts-simple-type "~1.0.5" + vscode-css-languageservice "4.3.0" + vscode-html-languageservice "3.1.0" + web-component-analyzer "~1.1.1" + +lit-element@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.2.2.tgz#d148ab6bf4c53a33f707a5168e087725499e5f2b" + integrity sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ== + dependencies: + "@lit/reactive-element" "^1.3.0" + lit-html "^2.2.0" + +lit-html@^2.0.0, lit-html@^2.2.0, lit-html@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.3.1.tgz#56f15104ea75c0a702904893e3409d0e89e2a2b9" + integrity sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA== + dependencies: + "@types/trusted-types" "^2.0.2" + +lit@>=2.2.4, lit@^2.0.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.3.1.tgz#2cf1c2042da1e44c7a7cc72dff2d72303fd26f48" + integrity sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw== + dependencies: + "@lit/reactive-element" "^1.4.0" + lit-element "^3.2.0" + lit-html "^2.3.0" + +localtunnel@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.2.tgz#528d50087151c4790f89c2db374fe7b0a48501f0" + integrity sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug== + dependencies: + axios "0.21.4" + debug "4.3.2" + openurl "1.1.1" + yargs "17.1.1" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.deburr@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" + integrity sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ== + +lodash.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + integrity sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +luxon@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" + integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +maximatch@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2" + integrity sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A== + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mitt@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moo@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +nanocolors@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" + integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== + +nanoid@^3.1.25, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nunjucks@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.3.tgz#1b33615247290e94e28263b5d855ece765648a31" + integrity sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ== + dependencies: + a-sync-waterfall "^1.0.0" + asap "^2.0.3" + commander "^5.1.0" + +object-assign@^4, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + +open@^8.0.2: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + integrity sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA== + +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + 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.3" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@^1.3.2, parseurl@~1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@1.0.1, path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +portscanner@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.2.0.tgz#6059189b3efa0965c9d96a56b958eb9508411cf1" + integrity sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw== + dependencies: + async "^2.6.0" + is-number-like "^1.0.3" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@>=8.4.14, postcss@^8.4.14, postcss@^8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@>=2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + integrity sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w== + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + +prismjs@^1.26.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +promise@^7.0.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pug-attrs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" + integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== + dependencies: + constantinople "^4.0.1" + js-stringify "^1.0.2" + pug-runtime "^3.0.0" + +pug-code-gen@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce" + integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== + dependencies: + constantinople "^4.0.1" + doctypes "^1.1.0" + js-stringify "^1.0.2" + pug-attrs "^3.0.0" + pug-error "^2.0.0" + pug-runtime "^3.0.0" + void-elements "^3.1.0" + with "^7.0.0" + +pug-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" + integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== + +pug-filters@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" + integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== + dependencies: + constantinople "^4.0.1" + jstransformer "1.0.0" + pug-error "^2.0.0" + pug-walk "^2.0.0" + resolve "^1.15.1" + +pug-lexer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5" + integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== + dependencies: + character-parser "^2.2.0" + is-expression "^4.0.0" + pug-error "^2.0.0" + +pug-linker@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" + integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== + dependencies: + pug-error "^2.0.0" + pug-walk "^2.0.0" + +pug-load@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" + integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== + dependencies: + object-assign "^4.1.1" + pug-walk "^2.0.0" + +pug-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" + integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== + dependencies: + pug-error "^2.0.0" + token-stream "1.0.0" + +pug-runtime@^3.0.0, pug-runtime@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7" + integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== + +pug-strip-comments@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" + integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== + dependencies: + pug-error "^2.0.0" + +pug-walk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" + integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== + +pug@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.2.tgz#f35c7107343454e43bc27ae0ff76c731b78ea535" + integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== + dependencies: + pug-code-gen "^3.0.2" + pug-filters "^4.0.0" + pug-lexer "^5.0.1" + pug-linker "^4.0.0" + pug-load "^3.0.0" + pug-parser "^6.0.0" + pug-runtime "^3.0.1" + pug-strip-comments "^2.0.0" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + integrity sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA== + +qs@^6.5.2: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +range-parser@~1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.3.2, raw-body@^2.3.3: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-copy@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/recursive-copy/-/recursive-copy-2.0.14.tgz#6358af3b5f8da89562f000db44720c4daa94b6d7" + integrity sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog== + dependencies: + errno "^0.1.2" + graceful-fs "^4.1.4" + junk "^1.0.1" + maximatch "^0.1.0" + mkdirp "^0.5.1" + pify "^2.3.0" + promise "^7.0.1" + rimraf "^2.7.1" + slash "^1.0.0" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + integrity sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== + dependencies: + http-errors "~1.6.2" + path-is-absolute "1.0.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.1.7, resolve@^1.15.1, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + integrity sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw== + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@>=3.0.2, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rollup@~2.78.0: + version "2.78.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" + integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug== + +rxjs@^5.5.6: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serve-index@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + integrity sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g== + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slugify@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8" + integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socket.io-adapter@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" + integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== + +socket.io-client@^4.4.1: + version "4.5.2" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.2.tgz#9481518c560388c980c88b01e3cf62f367f04c96" + integrity sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.2.1" + socket.io-parser "~4.2.0" + +socket.io-parser@~4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" + integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@^4.4.1: + version "4.5.2" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.2.tgz#1eb25fd380ab3d63470aa8279f8e48d922d443ac" + integrity sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.2" + engine.io "~6.2.0" + socket.io-adapter "~2.4.0" + socket.io-parser "~4.2.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg== + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + integrity sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ== + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== + +tailwindcss@>=3.0.18: + version "3.1.8" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" + integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== + dependencies: + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.11" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.14" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tfunk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" + integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== + dependencies: + chalk "^1.1.3" + dlv "^1.1.3" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" + integrity sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg== + +ts-simple-type@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/ts-simple-type/-/ts-simple-type-1.0.7.tgz#03930af557528dd40eaa121913c7035a0baaacf8" + integrity sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@^1.6.16: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@>=4.6.4, typescript@^4.6.2: + version "4.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" + integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== + +typescript@^3.8.3: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + +typescript@~4.3.2: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +ua-parser-js@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775" + integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@^3.1.4: + version "3.17.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" + integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== + +uhyphen@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/uhyphen/-/uhyphen-0.1.0.tgz#3cc22afa790daa802b9f6789f3583108d5b4a08c" + integrity sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +vary@^1, vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite@>=3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.3.tgz#b2a0821c11aae124bb7618f8036913c689afcc59" + integrity sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA== + dependencies: + esbuild "^0.15.6" + postcss "^8.4.16" + resolve "^1.22.1" + rollup "~2.78.0" + optionalDependencies: + fsevents "~2.3.2" + +void-elements@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + +vscode-css-languageservice@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz#40c797d664ab6188cace33cfbb19b037580a9318" + integrity sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A== + dependencies: + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "3.16.0-next.2" + vscode-nls "^4.1.2" + vscode-uri "^2.1.2" + +vscode-html-languageservice@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz#265b53bda595e6947b16b0fb8c604e1e58685393" + integrity sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg== + dependencies: + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "3.16.0-next.2" + vscode-nls "^4.1.2" + vscode-uri "^2.1.2" + +vscode-languageserver-textdocument@^1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" + integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== + +vscode-languageserver-types@3.16.0-next.2: + version "3.16.0-next.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083" + integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q== + +vscode-nls@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167" + integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw== + +vscode-uri@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" + integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== + +web-component-analyzer@~1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz#d9bd904d904a711c19ba6046a45b60a7ee3ed2e9" + integrity sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ== + dependencies: + fast-glob "^3.2.2" + ts-simple-type "~1.0.5" + typescript "^3.8.3" + yargs "^15.3.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +with@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" + integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== + dependencies: + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + assert-never "^1.2.1" + babel-walk "3.0.0-canary-5" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.4.2: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@~8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== + +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.1.1: + version "17.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba" + integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +ylru@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785" + integrity sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 2d6848c53f5e73d8a0b3f18361280a0b7c0d4416 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 24 Sep 2022 23:10:21 -0500 Subject: [PATCH 040/397] refactors and reorganize --- .eslintrc | 6 - mypy.ini | 2 +- package-lock.json | 16541 ---------------- package.json | 51 +- poetry.lock | 20 +- postcss.config.js | 6 - pyproject.toml | 4 +- src/app/__init__.py | 9 +- src/app/api/__init__.py | 16 - src/app/asgi.py | 19 +- src/app/cli/commands/manage.py | 19 +- src/app/config/paths.py | 1 + src/app/core/__init__.py | 15 +- src/app/core/compression.py | 2 +- src/app/core/csrf.py | 2 +- src/app/core/guards.py | 71 - src/app/core/handlers.py | 27 - src/app/core/middleware/__init__.py | 3 + src/app/{ => core}/middleware/db.py | 0 src/app/core/openapi.py | 21 +- src/app/core/security.py | 30 +- src/app/core/static_files.py | 2 +- src/app/db/__init__.py | 4 +- src/app/db/migrations/env.py | 2 +- src/app/db/migrations/script.py.mako | 7 - .../versions/2022-09-15_e5c9c377ddce.py | 206 - .../versions/2022-09-24_2aca7639e493.py | 143 + src/app/db/models/__init__.py | 7 + src/app/{ => db}/models/base.py | 0 src/app/{ => db}/models/team.py | 11 +- src/app/{ => db}/models/upload.py | 2 +- src/app/{ => db}/models/user.py | 8 +- src/app/db/repositories/__init__.py | 15 + src/app/db/repositories/base.py | 335 + src/app/{ => db}/repositories/team.py | 7 +- src/app/{ => db}/repositories/team_invite.py | 7 +- src/app/{ => db}/repositories/upload.py | 7 +- src/app/{ => db}/repositories/user.py | 7 +- src/app/middleware/__init__.py | 4 - src/app/middleware/jwt.py | 153 - src/app/models/__init__.py | 7 - src/app/repositories/__init__.py | 18 - src/app/repositories/base.py | 403 - src/app/schemas/team.py | 2 +- src/app/schemas/team_invite.py | 2 +- src/app/schemas/user.py | 2 +- src/app/services/base.py | 194 +- src/app/services/team.py | 31 +- src/app/services/team_invite.py | 16 +- src/app/services/user.py | 24 +- src/app/utils/serializers.py | 2 +- src/app/utils/text/slugify.py | 12 +- src/app/web/__init__.py | 17 + src/app/web/assets/.gitkeep | 0 src/app/web/{ts => public}/index.html | 0 src/app/{api => web}/routes/__init__.py | 8 +- src/app/{api => web}/routes/access.py | 0 src/app/{api => web}/routes/collection.py | 0 src/app/web/routes/frontend.py | 19 + src/app/{api => web}/routes/health.py | 0 src/app/{api => web}/routes/user.py | 0 src/app/web/ts/common/TwLitElement.ts | 5 - src/app/web/ts/components/HelloWorld.ts | 11 - src/app/web/ts/pages/IndexPage.ts | 18 - src/app/web/ts/styles/tailwind.global.css | 9 - .../web/ts/styles/tailwind.global.css.d.ts | 2 - src/app/web/ts/util/TailwindMixin.ts | 19 - tsconfig.json | 21 - tsconfig.node.json | 32 - vite.config.ts | 108 - yarn.lock | 5065 ----- 71 files changed, 756 insertions(+), 23083 deletions(-) delete mode 100644 .eslintrc delete mode 100644 package-lock.json delete mode 100644 postcss.config.js delete mode 100644 src/app/api/__init__.py delete mode 100644 src/app/core/handlers.py create mode 100644 src/app/core/middleware/__init__.py rename src/app/{ => core}/middleware/db.py (100%) delete mode 100644 src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py create mode 100644 src/app/db/migrations/versions/2022-09-24_2aca7639e493.py create mode 100644 src/app/db/models/__init__.py rename src/app/{ => db}/models/base.py (100%) rename src/app/{ => db}/models/team.py (92%) rename src/app/{ => db}/models/upload.py (93%) rename src/app/{ => db}/models/user.py (84%) create mode 100644 src/app/db/repositories/__init__.py create mode 100644 src/app/db/repositories/base.py rename src/app/{ => db}/repositories/team.py (62%) rename src/app/{ => db}/repositories/team_invite.py (63%) rename src/app/{ => db}/repositories/upload.py (62%) rename src/app/{ => db}/repositories/user.py (62%) delete mode 100644 src/app/middleware/__init__.py delete mode 100644 src/app/middleware/jwt.py delete mode 100644 src/app/models/__init__.py delete mode 100644 src/app/repositories/__init__.py delete mode 100644 src/app/repositories/base.py delete mode 100644 src/app/web/assets/.gitkeep rename src/app/web/{ts => public}/index.html (100%) rename src/app/{api => web}/routes/__init__.py (69%) rename src/app/{api => web}/routes/access.py (100%) rename src/app/{api => web}/routes/collection.py (100%) create mode 100644 src/app/web/routes/frontend.py rename src/app/{api => web}/routes/health.py (100%) rename src/app/{api => web}/routes/user.py (100%) delete mode 100644 src/app/web/ts/common/TwLitElement.ts delete mode 100644 src/app/web/ts/components/HelloWorld.ts delete mode 100644 src/app/web/ts/pages/IndexPage.ts delete mode 100644 src/app/web/ts/styles/tailwind.global.css delete mode 100644 src/app/web/ts/styles/tailwind.global.css.d.ts delete mode 100644 src/app/web/ts/util/TailwindMixin.ts delete mode 100644 tsconfig.json delete mode 100644 tsconfig.node.json delete mode 100644 vite.config.ts delete mode 100644 yarn.lock diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 4a119fca..00000000 --- a/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["galex", "plugin:wc/recommended", "plugin:lit/recommended"], - "rules": { - "@typescript-eslint/explicit-member-accessibility": "off" - } -} diff --git a/mypy.ini b/mypy.ini index 70494b28..05f5248a 100644 --- a/mypy.ini +++ b/mypy.ini @@ -17,7 +17,7 @@ exclude = [".venv","*/migrations/*"] [mypy-app.db.migrations.*] ignore_errors = True -[mypy-app.models.base.*] +[mypy-app.db.models.base.*] warn_unused_ignores = False [mypy-tests.*] diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 99bb57e8..00000000 --- a/package-lock.json +++ /dev/null @@ -1,16541 +0,0 @@ -{ - "name": "starlite-spa", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "starlite-spa", - "version": "0.0.0", - "dependencies": { - "lit": ">=2.2.4", - "postcss": ">=8.4.14" - }, - "devDependencies": { - "@11ty/eleventy": ">=1.0.1", - "@11ty/eleventy-plugin-syntaxhighlight": ">=4.0.0", - "@custom-elements-manifest/analyzer": ">=0.6.3", - "@open-wc/testing": ">=3.1.5", - "@typescript-eslint/eslint-plugin": ">=5.25.0", - "@typescript-eslint/parser": ">=5.25.0", - "autoprefixer": ">=10.4.2", - "eslint": ">=8.8.0", - "eslint-plugin-lit": ">=1.6.1", - "eslint-plugin-wc": ">=1.3.2", - "lit-analyzer": ">=0.0.6", - "prettier": ">=2.6.2", - "rimraf": ">=3.0.2", - "tailwindcss": ">=3.0.18", - "typescript": ">=4.6.4", - "vite": ">=3.1.0" - } - }, - "node_modules/@11ty/dependency-tree": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", - "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", - "dev": true - }, - "node_modules/@11ty/eleventy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", - "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", - "dev": true, - "dependencies": { - "@11ty/dependency-tree": "^2.0.1", - "@11ty/eleventy-utils": "^1.0.1", - "@iarna/toml": "^2.2.5", - "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.10", - "chokidar": "^3.5.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "dependency-graph": "^0.11.0", - "ejs": "^3.1.8", - "fast-glob": "^3.2.11", - "graceful-fs": "^4.2.10", - "gray-matter": "^4.0.3", - "hamljs": "^0.6.2", - "handlebars": "^4.7.7", - "is-glob": "^4.0.3", - "kleur": "^4.1.5", - "liquidjs": "^9.40.0", - "lodash": "^4.17.21", - "luxon": "^2.5.0", - "markdown-it": "^12.3.2", - "minimist": "^1.2.6", - "moo": "^0.5.1", - "multimatch": "^5.0.0", - "mustache": "^4.2.0", - "normalize-path": "^3.0.0", - "nunjucks": "^3.2.3", - "path-to-regexp": "^6.2.1", - "please-upgrade-node": "^3.2.0", - "pretty": "^2.0.0", - "pug": "^3.0.2", - "recursive-copy": "^2.0.14", - "semver": "^7.3.7", - "slugify": "^1.6.5" - }, - "bin": { - "eleventy": "cmd.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-plugin-syntaxhighlight": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz", - "integrity": "sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ==", - "dev": true, - "dependencies": { - "linkedom": "^0.13.2", - "prismjs": "^1.26.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", - "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@custom-elements-manifest/analyzer": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz", - "integrity": "sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig==", - "dev": true, - "dependencies": { - "@custom-elements-manifest/find-dependencies": "^0.0.5", - "@web/config-loader": "0.1.3", - "chokidar": "3.5.2", - "command-line-args": "5.1.2", - "comment-parser": "1.2.4", - "custom-elements-manifest": "1.0.0", - "debounce": "1.2.1", - "globby": "11.0.4", - "typescript": "~4.3.2" - }, - "bin": { - "cem": "cem.js", - "custom-elements-manifest": "cem.js" - } - }, - "node_modules/@custom-elements-manifest/analyzer/node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@custom-elements-manifest/analyzer/node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@custom-elements-manifest/find-dependencies": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz", - "integrity": "sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==", - "dev": true, - "dependencies": { - "es-module-lexer": "^0.9.3" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.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" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@esm-bundle/chai": { - "version": "4.3.4-fix.0", - "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", - "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", - "dev": true, - "dependencies": { - "@types/chai": "^4.2.12" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", - "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@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, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "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==", - "dev": true - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "node_modules/@lit/reactive-element": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.4.1.tgz", - "integrity": "sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==" - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@open-wc/chai-dom-equals": { - "version": "0.12.36", - "resolved": "https://registry.npmjs.org/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz", - "integrity": "sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA==", - "dev": true, - "dependencies": { - "@open-wc/semantic-dom-diff": "^0.13.16", - "@types/chai": "^4.1.7" - } - }, - "node_modules/@open-wc/chai-dom-equals/node_modules/@open-wc/semantic-dom-diff": { - "version": "0.13.21", - "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz", - "integrity": "sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==", - "dev": true - }, - "node_modules/@open-wc/dedupe-mixin": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz", - "integrity": "sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q==", - "dev": true - }, - "node_modules/@open-wc/scoped-elements": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz", - "integrity": "sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw==", - "dev": true, - "dependencies": { - "@lit/reactive-element": "^1.0.0", - "@open-wc/dedupe-mixin": "^1.3.0" - } - }, - "node_modules/@open-wc/semantic-dom-diff": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz", - "integrity": "sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.1", - "@web/test-runner-commands": "^0.6.1" - } - }, - "node_modules/@open-wc/testing": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.6.tgz", - "integrity": "sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ==", - "dev": true, - "dependencies": { - "@esm-bundle/chai": "^4.3.4-fix.0", - "@open-wc/chai-dom-equals": "^0.12.36", - "@open-wc/semantic-dom-diff": "^0.19.7", - "@open-wc/testing-helpers": "^2.1.2", - "@types/chai": "^4.2.11", - "@types/chai-dom": "^0.0.12", - "@types/sinon-chai": "^3.2.3", - "chai-a11y-axe": "^1.3.2" - } - }, - "node_modules/@open-wc/testing-helpers": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz", - "integrity": "sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w==", - "dev": true, - "dependencies": { - "@open-wc/scoped-elements": "^2.1.3", - "lit": "^2.0.0", - "lit-html": "^2.0.0" - } - }, - "node_modules/@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", - "dev": true, - "dependencies": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/babel__code-frame": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz", - "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", - "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", - "dev": true - }, - "node_modules/@types/chai-dom": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-0.0.12.tgz", - "integrity": "sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/co-body": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.0.tgz", - "integrity": "sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", - "dev": true - }, - "node_modules/@types/convert-source-map": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.2.tgz", - "integrity": "sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "node_modules/@types/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", - "dev": true - }, - "node_modules/@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", - "dev": true - }, - "node_modules/@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", - "dev": true, - "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "dev": true, - "dependencies": { - "@types/koa": "*" - } - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.7.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz", - "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==", - "dev": true - }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", - "dev": true, - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", - "dev": true, - "dependencies": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", - "dev": true - }, - "node_modules/@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", - "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/type-utils": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", - "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", - "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", - "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", - "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", - "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", - "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", - "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@web/browser-logs": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.5.tgz", - "integrity": "sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg==", - "dev": true, - "dependencies": { - "errorstacks": "^2.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@web/config-loader": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", - "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", - "dev": true, - "dependencies": { - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@web/dev-server-core": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.19.tgz", - "integrity": "sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA==", - "dev": true, - "dependencies": { - "@types/koa": "^2.11.6", - "@types/ws": "^7.4.0", - "@web/parse5-utils": "^1.2.0", - "chokidar": "^3.4.3", - "clone": "^2.1.2", - "es-module-lexer": "^1.0.0", - "get-stream": "^6.0.0", - "is-stream": "^2.0.0", - "isbinaryfile": "^4.0.6", - "koa": "^2.13.0", - "koa-etag": "^4.0.0", - "koa-send": "^5.0.1", - "koa-static": "^5.0.0", - "lru-cache": "^6.0.0", - "mime-types": "^2.1.27", - "parse5": "^6.0.1", - "picomatch": "^2.2.2", - "ws": "^7.4.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@web/dev-server-core/node_modules/es-module-lexer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", - "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", - "dev": true - }, - "node_modules/@web/parse5-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", - "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", - "dev": true, - "dependencies": { - "@types/parse5": "^6.0.1", - "parse5": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@web/test-runner-commands": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz", - "integrity": "sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg==", - "dev": true, - "dependencies": { - "@web/test-runner-core": "^0.10.27", - "mkdirp": "^1.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@web/test-runner-core": { - "version": "0.10.27", - "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.27.tgz", - "integrity": "sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.11", - "@types/babel__code-frame": "^7.0.2", - "@types/co-body": "^6.1.0", - "@types/convert-source-map": "^1.5.1", - "@types/debounce": "^1.2.0", - "@types/istanbul-lib-coverage": "^2.0.3", - "@types/istanbul-reports": "^3.0.0", - "@web/browser-logs": "^0.2.1", - "@web/dev-server-core": "^0.3.18", - "chokidar": "^3.4.3", - "cli-cursor": "^3.1.0", - "co-body": "^6.1.0", - "convert-source-map": "^1.7.0", - "debounce": "^1.2.0", - "dependency-graph": "^0.11.0", - "globby": "^11.0.1", - "ip": "^1.1.5", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.0.2", - "log-update": "^4.0.0", - "nanocolors": "^0.2.1", - "nanoid": "^3.1.25", - "open": "^8.0.2", - "picomatch": "^2.2.2", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "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/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "dev": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", - "dev": true - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", - "dev": true, - "dependencies": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "3.1.0", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "6.2.3", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "1.0.2", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", - "dev": true, - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3", - "rxjs": "^5.5.6", - "typescript": "^4.6.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", - "dev": true, - "dependencies": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true - }, - "node_modules/bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dev": true, - "dependencies": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001411", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz", - "integrity": "sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chai-a11y-axe": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz", - "integrity": "sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw==", - "dev": true, - "dependencies": { - "axe-core": "^4.3.3" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", - "dev": true, - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/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/cliui/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/cliui/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/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/co-body": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", - "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", - "dev": true, - "dependencies": { - "inflation": "^2.0.0", - "qs": "^6.5.2", - "raw-body": "^2.3.3", - "type-is": "^1.6.16" - } - }, - "node_modules/co-body/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/command-line-args": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.2.tgz", - "integrity": "sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA==", - "dev": true, - "dependencies": { - "array-back": "^6.1.2", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", - "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/condense-newlines/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dev": true, - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/custom-elements-manifest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz", - "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==", - "dev": true - }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/didyoumean2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-4.1.0.tgz", - "integrity": "sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "leven": "^3.1.0", - "lodash.deburr": "^4.1.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", - "dev": true - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/eazy-logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", - "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", - "dev": true, - "dependencies": { - "tfunk": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.261", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", - "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/errorstacks": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.0.tgz", - "integrity": "sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.9", - "@esbuild/linux-loong64": "0.15.9", - "esbuild-android-64": "0.15.9", - "esbuild-android-arm64": "0.15.9", - "esbuild-darwin-64": "0.15.9", - "esbuild-darwin-arm64": "0.15.9", - "esbuild-freebsd-64": "0.15.9", - "esbuild-freebsd-arm64": "0.15.9", - "esbuild-linux-32": "0.15.9", - "esbuild-linux-64": "0.15.9", - "esbuild-linux-arm": "0.15.9", - "esbuild-linux-arm64": "0.15.9", - "esbuild-linux-mips64le": "0.15.9", - "esbuild-linux-ppc64le": "0.15.9", - "esbuild-linux-riscv64": "0.15.9", - "esbuild-linux-s390x": "0.15.9", - "esbuild-netbsd-64": "0.15.9", - "esbuild-openbsd-64": "0.15.9", - "esbuild-sunos-64": "0.15.9", - "esbuild-windows-32": "0.15.9", - "esbuild-windows-64": "0.15.9", - "esbuild-windows-arm64": "0.15.9" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "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" - } - }, - "node_modules/eslint": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "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.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "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.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-lit": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", - "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "requireindex": "^1.2.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "eslint": ">= 5" - } - }, - "node_modules/eslint-plugin-wc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz", - "integrity": "sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw==", - "dev": true, - "dependencies": { - "is-valid-element-name": "^1.0.0", - "js-levenshtein-esm": "^1.2.0" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "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==", - "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/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "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==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/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, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/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/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-replace/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "node_modules/glob/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/glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/hamljs": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", - "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dev": true, - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-expression/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.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", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-valid-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz", - "integrity": "sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw==", - "dev": true, - "dependencies": { - "is-potential-custom-element-name": "^1.0.0" - } - }, - "node_modules/is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/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/jake/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/jake/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/jake/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/jake/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/jake/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/js-beautify": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", - "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-levenshtein-esm": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz", - "integrity": "sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", - "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", - "dev": true - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", - "dev": true, - "dependencies": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "node_modules/junk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", - "dev": true, - "dependencies": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "^4.3.2", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^2.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "engines": { - "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" - } - }, - "node_modules/koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true - }, - "node_modules/koa-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", - "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "koa-compose": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/koa-etag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", - "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", - "dev": true, - "dependencies": { - "etag": "^1.8.1" - } - }, - "node_modules/koa-send": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", - "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "http-errors": "^1.7.3", - "resolve-path": "^1.4.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/koa-static": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", - "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "koa-send": "^5.0.0" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/koa-static/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/koa/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/linkedom": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.13.7.tgz", - "integrity": "sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg==", - "dev": true, - "dependencies": { - "css-select": "^4.2.1", - "cssom": "^0.5.0", - "html-escaper": "^3.0.3", - "htmlparser2": "^7.2.0", - "uhyphen": "^0.1.0" - } - }, - "node_modules/linkedom/node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "dev": true - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/liquidjs": { - "version": "9.42.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", - "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", - "dev": true, - "bin": { - "liquid": "bin/liquid.js", - "liquidjs": "bin/liquid.js" - }, - "engines": { - "node": ">=4.8.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/liquidjs" - } - }, - "node_modules/lit": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz", - "integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==", - "dependencies": { - "@lit/reactive-element": "^1.4.0", - "lit-element": "^3.2.0", - "lit-html": "^2.3.0" - } - }, - "node_modules/lit-analyzer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", - "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "didyoumean2": "4.1.0", - "fast-glob": "^2.2.6", - "parse5": "5.1.0", - "ts-simple-type": "~1.0.5", - "vscode-css-languageservice": "4.3.0", - "vscode-html-languageservice": "3.1.0", - "web-component-analyzer": "~1.1.1" - }, - "bin": { - "lit-analyzer": "cli.js" - } - }, - "node_modules/lit-analyzer/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/lit-analyzer/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/lit-analyzer/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/lit-analyzer/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "node_modules/lit-analyzer/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", - "dependencies": { - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" - } - }, - "node_modules/lit-html": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.3.1.tgz", - "integrity": "sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA==", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/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, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/luxon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", - "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "dev": true, - "dependencies": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/maximatch/node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/maximatch/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/maximatch/node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/moo": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true, - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/nanocolors": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", - "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nunjucks": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", - "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", - "dev": true, - "dependencies": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - }, - "bin": { - "nunjucks-precompile": "bin/precompile" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "chokidar": "^3.3.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", - "dev": true - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "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.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/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, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", - "dev": true, - "dependencies": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dev": true, - "dependencies": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "node_modules/pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true - }, - "node_modules/pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "node_modules/pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dev": true, - "dependencies": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "node_modules/pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", - "dev": true - }, - "node_modules/pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/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/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recursive-copy": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", - "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", - "dev": true, - "dependencies": { - "errno": "^0.1.2", - "graceful-fs": "^4.1.4", - "junk": "^1.0.1", - "maximatch": "^0.1.0", - "mkdirp": "^0.5.1", - "pify": "^2.3.0", - "promise": "^7.0.1", - "rimraf": "^2.7.1", - "slash": "^1.0.0" - } - }, - "node_modules/recursive-copy/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/recursive-copy/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/recursive-copy/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/recursive-copy/node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", - "dev": true, - "dependencies": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/resolve-path/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/resolve-path/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/resolve-path/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true - }, - "node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/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.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "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" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/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/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==", - "dev": true - }, - "node_modules/slugify": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-client": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", - "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dev": true, - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-throttle/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dev": true, - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/tailwindcss/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/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/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/tfunk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", - "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "dlv": "^1.1.3" - } - }, - "node_modules/tfunk/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/tfunk/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tfunk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", - "dev": true - }, - "node_modules/ts-simple-type": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", - "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", - "dev": true - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true, - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "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/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uhyphen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.1.0.tgz", - "integrity": "sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==", - "dev": true - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.6", - "postcss": "^8.4.16", - "resolve": "^1.22.1", - "rollup": "~2.78.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vscode-css-languageservice": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz", - "integrity": "sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==", - "dev": true, - "dependencies": { - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "3.16.0-next.2", - "vscode-nls": "^4.1.2", - "vscode-uri": "^2.1.2" - } - }, - "node_modules/vscode-html-languageservice": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz", - "integrity": "sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==", - "dev": true, - "dependencies": { - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "3.16.0-next.2", - "vscode-nls": "^4.1.2", - "vscode-uri": "^2.1.2" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", - "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", - "dev": true - }, - "node_modules/vscode-languageserver-types": { - "version": "3.16.0-next.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", - "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", - "dev": true - }, - "node_modules/vscode-nls": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", - "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", - "dev": true - }, - "node_modules/vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", - "dev": true - }, - "node_modules/web-component-analyzer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz", - "integrity": "sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.2", - "ts-simple-type": "~1.0.5", - "typescript": "^3.8.3", - "yargs": "^15.3.1" - }, - "bin": { - "wca": "cli.js", - "web-component-analyzer": "cli.js" - } - }, - "node_modules/web-component-analyzer/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/web-component-analyzer/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-component-analyzer/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/web-component-analyzer/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/web-component-analyzer/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "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/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "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" - } - } - }, - "dependencies": { - "@11ty/dependency-tree": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", - "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", - "dev": true - }, - "@11ty/eleventy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", - "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", - "dev": true, - "requires": { - "@11ty/dependency-tree": "^2.0.1", - "@11ty/eleventy-utils": "^1.0.1", - "@iarna/toml": "^2.2.5", - "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.10", - "chokidar": "^3.5.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "dependency-graph": "^0.11.0", - "ejs": "^3.1.8", - "fast-glob": "^3.2.11", - "graceful-fs": "^4.2.10", - "gray-matter": "^4.0.3", - "hamljs": "^0.6.2", - "handlebars": "^4.7.7", - "is-glob": "^4.0.3", - "kleur": "^4.1.5", - "liquidjs": "^9.40.0", - "lodash": "^4.17.21", - "luxon": "^2.5.0", - "markdown-it": "^12.3.2", - "minimist": "^1.2.6", - "moo": "^0.5.1", - "multimatch": "^5.0.0", - "mustache": "^4.2.0", - "normalize-path": "^3.0.0", - "nunjucks": "^3.2.3", - "path-to-regexp": "^6.2.1", - "please-upgrade-node": "^3.2.0", - "pretty": "^2.0.0", - "pug": "^3.0.2", - "recursive-copy": "^2.0.14", - "semver": "^7.3.7", - "slugify": "^1.6.5" - } - }, - "@11ty/eleventy-plugin-syntaxhighlight": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz", - "integrity": "sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ==", - "dev": true, - "requires": { - "linkedom": "^0.13.2", - "prismjs": "^1.26.0" - } - }, - "@11ty/eleventy-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", - "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", - "dev": true - }, - "@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@custom-elements-manifest/analyzer": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz", - "integrity": "sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig==", - "dev": true, - "requires": { - "@custom-elements-manifest/find-dependencies": "^0.0.5", - "@web/config-loader": "0.1.3", - "chokidar": "3.5.2", - "command-line-args": "5.1.2", - "comment-parser": "1.2.4", - "custom-elements-manifest": "1.0.0", - "debounce": "1.2.1", - "globby": "11.0.4", - "typescript": "~4.3.2" - }, - "dependencies": { - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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" - } - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true - } - } - }, - "@custom-elements-manifest/find-dependencies": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz", - "integrity": "sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==", - "dev": true, - "requires": { - "es-module-lexer": "^0.9.3" - } - }, - "@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.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" - } - }, - "@esm-bundle/chai": { - "version": "4.3.4-fix.0", - "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", - "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", - "dev": true, - "requires": { - "@types/chai": "^4.2.12" - } - }, - "@humanwhocodes/config-array": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", - "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true - }, - "@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": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@lit/reactive-element": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.4.1.tgz", - "integrity": "sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==" - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@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" - } - }, - "@open-wc/chai-dom-equals": { - "version": "0.12.36", - "resolved": "https://registry.npmjs.org/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz", - "integrity": "sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA==", - "dev": true, - "requires": { - "@open-wc/semantic-dom-diff": "^0.13.16", - "@types/chai": "^4.1.7" - }, - "dependencies": { - "@open-wc/semantic-dom-diff": { - "version": "0.13.21", - "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz", - "integrity": "sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==", - "dev": true - } - } - }, - "@open-wc/dedupe-mixin": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz", - "integrity": "sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q==", - "dev": true - }, - "@open-wc/scoped-elements": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz", - "integrity": "sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw==", - "dev": true, - "requires": { - "@lit/reactive-element": "^1.0.0", - "@open-wc/dedupe-mixin": "^1.3.0" - } - }, - "@open-wc/semantic-dom-diff": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz", - "integrity": "sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA==", - "dev": true, - "requires": { - "@types/chai": "^4.3.1", - "@web/test-runner-commands": "^0.6.1" - } - }, - "@open-wc/testing": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.1.6.tgz", - "integrity": "sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ==", - "dev": true, - "requires": { - "@esm-bundle/chai": "^4.3.4-fix.0", - "@open-wc/chai-dom-equals": "^0.12.36", - "@open-wc/semantic-dom-diff": "^0.19.7", - "@open-wc/testing-helpers": "^2.1.2", - "@types/chai": "^4.2.11", - "@types/chai-dom": "^0.0.12", - "@types/sinon-chai": "^3.2.3", - "chai-a11y-axe": "^1.3.2" - } - }, - "@open-wc/testing-helpers": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz", - "integrity": "sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w==", - "dev": true, - "requires": { - "@open-wc/scoped-elements": "^2.1.3", - "lit": "^2.0.0", - "lit-html": "^2.0.0" - } - }, - "@sindresorhus/slugify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", - "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", - "dev": true, - "requires": { - "@sindresorhus/transliterate": "^0.1.1", - "escape-string-regexp": "^4.0.0" - } - }, - "@sindresorhus/transliterate": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", - "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0", - "lodash.deburr": "^4.1.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/babel__code-frame": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz", - "integrity": "sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", - "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", - "dev": true - }, - "@types/chai-dom": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-0.0.12.tgz", - "integrity": "sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/co-body": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.0.tgz", - "integrity": "sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", - "dev": true - }, - "@types/convert-source-map": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.2.tgz", - "integrity": "sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==", - "dev": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", - "dev": true - }, - "@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", - "dev": true - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", - "dev": true - }, - "@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", - "dev": true, - "requires": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "dev": true, - "requires": { - "@types/koa": "*" - } - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/node": { - "version": "18.7.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz", - "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==", - "dev": true - }, - "@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", - "dev": true, - "requires": { - "@types/sinonjs__fake-timers": "*" - } - }, - "@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", - "dev": true, - "requires": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", - "dev": true - }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", - "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/type-utils": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", - "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", - "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", - "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", - "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", - "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "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" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", - "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", - "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@web/browser-logs": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.5.tgz", - "integrity": "sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg==", - "dev": true, - "requires": { - "errorstacks": "^2.2.0" - } - }, - "@web/config-loader": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", - "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", - "dev": true, - "requires": { - "semver": "^7.3.4" - } - }, - "@web/dev-server-core": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.19.tgz", - "integrity": "sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA==", - "dev": true, - "requires": { - "@types/koa": "^2.11.6", - "@types/ws": "^7.4.0", - "@web/parse5-utils": "^1.2.0", - "chokidar": "^3.4.3", - "clone": "^2.1.2", - "es-module-lexer": "^1.0.0", - "get-stream": "^6.0.0", - "is-stream": "^2.0.0", - "isbinaryfile": "^4.0.6", - "koa": "^2.13.0", - "koa-etag": "^4.0.0", - "koa-send": "^5.0.1", - "koa-static": "^5.0.0", - "lru-cache": "^6.0.0", - "mime-types": "^2.1.27", - "parse5": "^6.0.1", - "picomatch": "^2.2.2", - "ws": "^7.4.2" - }, - "dependencies": { - "es-module-lexer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", - "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", - "dev": true - } - } - }, - "@web/parse5-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.0.tgz", - "integrity": "sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg==", - "dev": true, - "requires": { - "@types/parse5": "^6.0.1", - "parse5": "^6.0.1" - } - }, - "@web/test-runner-commands": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz", - "integrity": "sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg==", - "dev": true, - "requires": { - "@web/test-runner-core": "^0.10.27", - "mkdirp": "^1.0.4" - } - }, - "@web/test-runner-core": { - "version": "0.10.27", - "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.27.tgz", - "integrity": "sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.11", - "@types/babel__code-frame": "^7.0.2", - "@types/co-body": "^6.1.0", - "@types/convert-source-map": "^1.5.1", - "@types/debounce": "^1.2.0", - "@types/istanbul-lib-coverage": "^2.0.3", - "@types/istanbul-reports": "^3.0.0", - "@web/browser-logs": "^0.2.1", - "@web/dev-server-core": "^0.3.18", - "chokidar": "^3.4.3", - "cli-cursor": "^3.1.0", - "co-body": "^6.1.0", - "convert-source-map": "^1.7.0", - "debounce": "^1.2.0", - "dependency-graph": "^0.11.0", - "globby": "^11.0.1", - "ip": "^1.1.5", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.0.2", - "log-update": "^4.0.0", - "nanocolors": "^0.2.1", - "nanoid": "^3.1.25", - "open": "^8.0.2", - "picomatch": "^2.2.2", - "source-map": "^0.7.3" - } - }, - "a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "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": {} - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "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": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "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 - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, - "array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "dev": true - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, - "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-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "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": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", - "dev": true - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6" - } - }, - "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 - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", - "dev": true, - "requires": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "3.1.0", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "6.2.3", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "1.0.2", - "yargs": "^17.3.1" - } - }, - "browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", - "dev": true, - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3", - "rxjs": "^5.5.6", - "typescript": "^4.6.2" - } - }, - "browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", - "dev": true, - "requires": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true - }, - "bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", - "dev": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dev": true, - "requires": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001411", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz", - "integrity": "sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g==", - "dev": true - }, - "chai-a11y-axe": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz", - "integrity": "sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw==", - "dev": true, - "requires": { - "axe-core": "^4.3.3" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", - "dev": true, - "requires": { - "is-regex": "^1.0.3" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "co-body": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", - "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", - "dev": true, - "requires": { - "inflation": "^2.0.0", - "qs": "^6.5.2", - "raw-body": "^2.3.3", - "type-is": "^1.6.16" - }, - "dependencies": { - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "command-line-args": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.2.tgz", - "integrity": "sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA==", - "dev": true, - "requires": { - "array-back": "^6.1.2", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "comment-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", - "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "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 - }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dev": true, - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dev": true, - "requires": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "custom-elements-manifest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz", - "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==", - "dev": true - }, - "debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true - }, - "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-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "didyoumean2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-4.1.0.tgz", - "integrity": "sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "leven": "^3.1.0", - "lodash.deburr": "^4.1.0" - } - }, - "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" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "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" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", - "dev": true - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "eazy-logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", - "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", - "dev": true, - "requires": { - "tfunk": "^4.0.0" - } - }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.261", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", - "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==", - "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 - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "dependencies": { - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - } - } - }, - "engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" - }, - "dependencies": { - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "errorstacks": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.0.tgz", - "integrity": "sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.9", - "@esbuild/linux-loong64": "0.15.9", - "esbuild-android-64": "0.15.9", - "esbuild-android-arm64": "0.15.9", - "esbuild-darwin-64": "0.15.9", - "esbuild-darwin-arm64": "0.15.9", - "esbuild-freebsd-64": "0.15.9", - "esbuild-freebsd-arm64": "0.15.9", - "esbuild-linux-32": "0.15.9", - "esbuild-linux-64": "0.15.9", - "esbuild-linux-arm": "0.15.9", - "esbuild-linux-arm64": "0.15.9", - "esbuild-linux-mips64le": "0.15.9", - "esbuild-linux-ppc64le": "0.15.9", - "esbuild-linux-riscv64": "0.15.9", - "esbuild-linux-s390x": "0.15.9", - "esbuild-netbsd-64": "0.15.9", - "esbuild-openbsd-64": "0.15.9", - "esbuild-sunos-64": "0.15.9", - "esbuild-windows-32": "0.15.9", - "esbuild-windows-64": "0.15.9", - "esbuild-windows-arm64": "0.15.9" - } - }, - "esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "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.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "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.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "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.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "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 - }, - "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" - } - }, - "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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-plugin-lit": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", - "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "requireindex": "^1.2.0" - } - }, - "eslint-plugin-wc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz", - "integrity": "sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw==", - "dev": true, - "requires": { - "is-valid-element-name": "^1.0.0", - "js-levenshtein-esm": "^1.2.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "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.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "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 - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "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" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "requires": { - "array-back": "^3.0.1" - }, - "dependencies": { - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - } - } - }, - "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.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.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.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "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" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "hamljs": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", - "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - }, - "dependencies": { - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - } - } - }, - "http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dev": true, - "requires": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - } - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "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 - }, - "inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.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-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-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-valid-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz", - "integrity": "sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw==", - "dev": true, - "requires": { - "is-potential-custom-element-name": "^1.0.0" - } - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-beautify": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", - "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", - "dev": true, - "requires": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - } - }, - "js-levenshtein-esm": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz", - "integrity": "sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ==", - "dev": true - }, - "js-sdsl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", - "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", - "dev": true - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "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-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==", - "dev": true - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", - "dev": true, - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "junk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", - "dev": true - }, - "keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "requires": { - "tsscmp": "1.0.6" - } - }, - "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 - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", - "dev": true, - "requires": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "^4.3.2", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^2.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true - }, - "koa-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", - "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", - "dev": true, - "requires": { - "co": "^4.6.0", - "koa-compose": "^4.1.0" - } - }, - "koa-etag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", - "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", - "dev": true, - "requires": { - "etag": "^1.8.1" - } - }, - "koa-send": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", - "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "http-errors": "^1.7.3", - "resolve-path": "^1.4.0" - } - }, - "koa-static": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", - "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "koa-send": "^5.0.0" - }, - "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" - } - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "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" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "linkedom": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.13.7.tgz", - "integrity": "sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg==", - "dev": true, - "requires": { - "css-select": "^4.2.1", - "cssom": "^0.5.0", - "html-escaper": "^3.0.3", - "htmlparser2": "^7.2.0", - "uhyphen": "^0.1.0" - }, - "dependencies": { - "html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "dev": true - } - } - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "liquidjs": { - "version": "9.42.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", - "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", - "dev": true - }, - "lit": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz", - "integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==", - "requires": { - "@lit/reactive-element": "^1.4.0", - "lit-element": "^3.2.0", - "lit-html": "^2.3.0" - } - }, - "lit-analyzer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", - "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "didyoumean2": "4.1.0", - "fast-glob": "^2.2.6", - "parse5": "5.1.0", - "ts-simple-type": "~1.0.5", - "vscode-css-languageservice": "4.3.0", - "vscode-html-languageservice": "3.1.0", - "web-component-analyzer": "~1.1.1" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", - "requires": { - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" - } - }, - "lit-html": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.3.1.tgz", - "integrity": "sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA==", - "requires": { - "@types/trusted-types": "^2.0.2" - } - }, - "localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "requires": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "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==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "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 - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "luxon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", - "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } - } - }, - "maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "dependencies": { - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - } - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "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.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "moo": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - } - }, - "mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true - }, - "nanocolors": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", - "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nunjucks": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", - "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", - "dev": true, - "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", - "dev": true - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true - } - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "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.3" - } - }, - "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" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "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" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "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-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "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 - }, - "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true - }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - } - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dev": true, - "requires": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true - }, - "pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dev": true, - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dev": true, - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dev": true, - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", - "dev": true - }, - "pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dev": true, - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", - "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 - }, - "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 - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "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" - } - }, - "recursive-copy": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", - "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", - "dev": true, - "requires": { - "errno": "^0.1.2", - "graceful-fs": "^4.1.4", - "junk": "^1.0.1", - "maximatch": "^0.1.0", - "mkdirp": "^0.5.1", - "pify": "^2.3.0", - "promise": "^7.0.1", - "rimraf": "^2.7.1", - "slash": "^1.0.0" - }, - "dependencies": { - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true - } - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.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-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", - "dev": true, - "requires": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true - }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "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": { - "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" - } - } - } - }, - "rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "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" - } - }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "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, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "slugify": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-client": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", - "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "dev": true - }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dev": true, - "requires": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "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" - } - }, - "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-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true - }, - "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", - "dev": true - }, - "tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dev": true, - "requires": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "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 - }, - "tfunk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", - "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "dlv": "^1.1.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", - "dev": true - }, - "ts-simple-type": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", - "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "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, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "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 - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true - }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true - }, - "ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", - "dev": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", - "dev": true, - "optional": true - }, - "uhyphen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.1.0.tgz", - "integrity": "sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - } - } - }, - "update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "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 - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", - "dev": true, - "requires": { - "esbuild": "^0.15.6", - "fsevents": "~2.3.2", - "postcss": "^8.4.16", - "resolve": "^1.22.1", - "rollup": "~2.78.0" - } - }, - "void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "dev": true - }, - "vscode-css-languageservice": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz", - "integrity": "sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==", - "dev": true, - "requires": { - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "3.16.0-next.2", - "vscode-nls": "^4.1.2", - "vscode-uri": "^2.1.2" - } - }, - "vscode-html-languageservice": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz", - "integrity": "sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==", - "dev": true, - "requires": { - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "3.16.0-next.2", - "vscode-nls": "^4.1.2", - "vscode-uri": "^2.1.2" - } - }, - "vscode-languageserver-textdocument": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", - "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", - "dev": true - }, - "vscode-languageserver-types": { - "version": "3.16.0-next.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", - "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", - "dev": true - }, - "vscode-nls": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", - "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", - "dev": true - }, - "vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", - "dev": true - }, - "web-component-analyzer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz", - "integrity": "sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.2", - "ts-simple-type": "~1.0.5", - "typescript": "^3.8.3", - "yargs": "^15.3.1" - }, - "dependencies": { - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dev": true, - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - }, - "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", - "dev": true - }, - "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 - } - } -} diff --git a/package.json b/package.json index 59bd3d7f..b1aceac1 100644 --- a/package.json +++ b/package.json @@ -9,26 +9,41 @@ "lint": "eslint src --fix" }, "dependencies": { - "lit": ">=2.2.4", - "postcss": ">=8.4.14" + "lit": "^2.3.1" }, "devDependencies": { - "@11ty/eleventy": ">=1.0.1", - "@11ty/eleventy-plugin-syntaxhighlight": ">=4.0.0", - "@custom-elements-manifest/analyzer": ">=0.6.3", - "@open-wc/testing": ">=3.1.5", - "@typescript-eslint/eslint-plugin": ">=5.25.0", - "@typescript-eslint/parser": ">=5.25.0", - "autoprefixer": ">=10.4.2", - "eslint": ">=8.8.0", - "eslint-plugin-lit": ">=1.6.1", - "eslint-plugin-wc": ">=1.3.2", - "lit-analyzer": ">=0.0.6", - "prettier": ">=2.6.2", - "rimraf": ">=3.0.2", - "tailwindcss": ">=3.0.18", - "typescript": ">=4.6.4", - "vite": ">=3.1.0" + "@custom-elements-manifest/analyzer": "^0.6.4", + "@cypress/vite-dev-server": "^3.1.1", + "@open-wc/testing": "^3.1.6", + "@openapitools/openapi-generator-cli": "^2.5.2", + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/line-clamp": "^0.4.2", + "@tailwindcss/typography": "^0.5.7", + "@types/node": "^18.7.20", + "@types/uuid": "^8.3.4", + "@typescript-eslint/eslint-plugin": "^5.38.0", + "@typescript-eslint/parser": "^5.38.0", + "autoprefixer": "^10.4.12", + "concurrently": "^7.4.0", + "cross-env": "^7.0.3", + "cssnano": "^5.1.13", + "cypress": "^10.8.0", + "dotenv": "^16.0.2", + "eslint": "^8.24.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-lit": "^1.6.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-wc": "^1.3.2", + "postcss": "^8.4.16", + "postcss-import": "^15.0.0", + "prettier": "^2.7.1", + "rimraf": "^3.0.2", + "tailwindcss": "^3.1.8", + "ts-lit-plugin": "^1.2.1", + "typescript": "^4.8.3", + "vite": "^3.1.3", + "vite-plugin-eslint": "^1.8.1" }, "customElements": "custom-elements.json" } diff --git a/poetry.lock b/poetry.lock index 8035bae5..08133d35 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1315,7 +1315,7 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] name = "pyupgrade" -version = "2.38.0" +version = "2.38.1" description = "A tool to automatically upgrade syntax for newer versions." category = "dev" optional = false @@ -1420,7 +1420,7 @@ pyasn1 = ">=0.1.3" [[package]] name = "setuptools" -version = "65.3.0" +version = "65.4.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false @@ -1579,9 +1579,9 @@ starlite = ">=1.16.0" [package.source] type = "git" -url = "https://github.com/starlite-api/starlite-jwt.git" -reference = "main" -resolved_reference = "9336b76493a84b0f7eeaffb84fc3088f2c58de4b" +url = "https://github.com/cofin/starlite-jwt.git" +reference = "enhancements" +resolved_reference = "ca4b49aea2432f122963cb91cab590aa70cfa8a8" [[package]] name = "starlite-multipart" @@ -1885,7 +1885,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10,<4.0" -content-hash = "7e6eae5ac8d9e9ae7eefac5943c9b445fec3e60e74562ba8d08b0d12ccb16fea" +content-hash = "4a25b61c49934cab07364e5a773b530d548ebb05cf0c9fc68140009d68aa7841" [metadata.files] alembic = [ @@ -2910,8 +2910,8 @@ python-jose = [ {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, ] pyupgrade = [ - {file = "pyupgrade-2.38.0-py2.py3-none-any.whl", hash = "sha256:e68e033603de3b4b675c7bd733723fb2bb7930a1898b6da61fb503643322e2f9"}, - {file = "pyupgrade-2.38.0.tar.gz", hash = "sha256:7d03766fb5d68e9b0ec86b7d48c3cc29462b0031ff48ceece34bd224708553c0"}, + {file = "pyupgrade-2.38.1-py2.py3-none-any.whl", hash = "sha256:6ef3e7409d6e3648f1c4d71d7654e524a4fa59c58c4c9dc12aa750344ead96c7"}, + {file = "pyupgrade-2.38.1.tar.gz", hash = "sha256:deac11e7f7393c4cfd133e2d1cd7bac52c4471b4f37afb1577ed9feede28442e"}, ] PyYAML = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, @@ -2973,8 +2973,8 @@ rsa = [ {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, ] setuptools = [ - {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"}, - {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"}, + {file = "setuptools-65.4.0-py3-none-any.whl", hash = "sha256:c2d2709550f15aab6c9110196ea312f468f41cd546bceb24127a1be6fdcaeeb1"}, + {file = "setuptools-65.4.0.tar.gz", hash = "sha256:a8f6e213b4b0661f590ccf40de95d28a177cd747d098624ad3f69c40287297e9"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 33ad091d..00000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/pyproject.toml b/pyproject.toml index 47e4125d..26249fd8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ packages = [ {include = "app", from = "src"}, ] readme = "README.md" -repository = "https://github.com/cofin/app" +repository = "https://github.com/cofin/starlite-spa" version = "0.1.0" [tool.poetry.scripts] app = "app.__main__:main" @@ -44,7 +44,7 @@ redis = "*" rich = "*" sqlalchemy = {git = "https://github.com/sqlalchemy/sqlalchemy.git", branch = "main", extras = ["asyncio"]} starlite = {git = "https://github.com/starlite-api/starlite.git", branch = "main", extras = ["picologging","brotli"]} -starlite-jwt = {git = "https://github.com/starlite-api/starlite-jwt.git", branch = "main"} +starlite-jwt = {git = "https://github.com/cofin/starlite-jwt.git", branch = "enhancements"} starlite-sessions = "*" universal_pathlib = "*" uvicorn = {extras = ["standard"], version = "*"} diff --git a/src/app/__init__.py b/src/app/__init__.py index 7803ccaf..883ba604 100644 --- a/src/app/__init__.py +++ b/src/app/__init__.py @@ -1,6 +1,6 @@ import logging -from app import api, asgi, cli, config, core, db, middleware, models, repositories, schemas, utils, web +from app import asgi, cli, config, core, db, schemas, services, utils, web from app.version import __version__ logger = logging.getLogger(__name__) @@ -8,16 +8,13 @@ __all__ = [ "__version__", - "api", - "config", "web", + "config", + "services", "core", "utils", "cli", "asgi", "db", "schemas", - "repositories", - "middleware", - "models", ] diff --git a/src/app/api/__init__.py b/src/app/api/__init__.py deleted file mode 100644 index fc395303..00000000 --- a/src/app/api/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -from starlite import Router - -from app.api import routes - -router = Router( - path="", - route_handlers=[ - routes.health_router, - routes.access_router, - routes.user_router, - routes.collection_router, - ], -) - - -__all__ = ["routes", "router"] diff --git a/src/app/asgi.py b/src/app/asgi.py index e505c82b..82ad62fe 100644 --- a/src/app/asgi.py +++ b/src/app/asgi.py @@ -1,9 +1,20 @@ from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR from starlite import Provide, Starlite -from app import api, db, middleware +from app import db, web from app.config import log_config, settings -from app.core import cache, client, compression, cors, exceptions, openapi, response, security, static_files +from app.core import ( + cache, + client, + compression, + cors, + exceptions, + middleware, + openapi, + response, + security, + static_files, +) __all__ = ["app"] @@ -12,11 +23,11 @@ debug=settings.app.DEBUG, exception_handlers={HTTP_500_INTERNAL_SERVER_ERROR: exceptions.logging_exception_handler}, on_shutdown=[db.on_shutdown, client.on_shutdown, cache.on_shutdown], - on_startup=[log_config.configure], + logging_config=log_config, openapi_config=openapi.config, compression_config=compression.config, cors_config=cors.config, - route_handlers=[api.router], + route_handlers=[web.router], cache_config=cache.config, response_class=response.Response, middleware=[security.auth.middleware, middleware.DatabaseSessionMiddleware], diff --git a/src/app/cli/commands/manage.py b/src/app/cli/commands/manage.py index eef541bf..fed24b75 100644 --- a/src/app/cli/commands/manage.py +++ b/src/app/cli/commands/manage.py @@ -17,7 +17,7 @@ from app.cli.console import console from app.config import settings from app.db import AsyncScopedSession, engine -from app.models import BaseModel, meta +from app.db.models import BaseModel, meta logger = logging.getLogger() @@ -144,14 +144,13 @@ async def _promote_to_superuser(email: EmailStr) -> None: required=False, show_default=False, ) -def export_api_schema(options: dict[str, Any]) -> None: +def export_api_schema(export_path: str) -> None: """Push secrets to Secrets Provider""" - export_location = options.get("export_location", ".") console.print("Exporting API Schema") application = app schema = application.openapi_schema if schema: - with open(export_location, "w", encoding="utf-8") as fd: + with open(export_path, "w", encoding="utf-8") as fd: fd.write(utils.serializers.serialize_object(application.openapi_schema)) console.print_json(schema.json()) @@ -160,7 +159,7 @@ def export_api_schema(options: dict[str, Any]) -> None: name="create-database", help="Creates an empty postgres database and executes migrations", ) -def create_database(options: dict[str, Any]) -> None: +def create_database() -> None: """Create database DDL migrations.""" alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) @@ -171,7 +170,7 @@ def create_database(options: dict[str, Any]) -> None: name="upgrade-database", help="Executes migrations to apply any outstanding database structures.", ) -def upgrade_database(options: dict[str, Any]) -> None: +def upgrade_database() -> None: """Upgrade the database to the latest revision.""" alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) @@ -189,10 +188,10 @@ def upgrade_database(options: dict[str, Any]) -> None: default=False, required=False, show_default=True, + is_flag=True, ) -def reset_database(options: dict[str, Any]) -> None: +def reset_database(no_prompt: bool) -> None: """Resets the database to an initial empty state.""" - no_prompt = options.get("no_prompt", False) if not no_prompt: Confirm.ask( "[bold red] Are you sure you want to drop and recreate everything?", @@ -217,10 +216,10 @@ def reset_database(options: dict[str, Any]) -> None: default=False, required=False, show_default=True, + is_flag=True, ) -def purge_database(options: dict[str, Any]) -> None: +def purge_database(no_prompt: bool) -> None: """Drop all objects in the database.""" - no_prompt = options.get("no_prompt", False) if not no_prompt: confirm = Confirm.ask( "[bold red] Are you sure you want to drop everything?", diff --git a/src/app/config/paths.py b/src/app/config/paths.py index 7c801ed8..9286e81b 100644 --- a/src/app/config/paths.py +++ b/src/app/config/paths.py @@ -18,6 +18,7 @@ class ApiPaths: SIGNUP = "/api/access/signup" # STATIC = "/public" + INDEX = "/" urls = ApiPaths() diff --git a/src/app/core/__init__.py b/src/app/core/__init__.py index 843fa2b2..8c7b39b7 100644 --- a/src/app/core/__init__.py +++ b/src/app/core/__init__.py @@ -1,16 +1,4 @@ -from app.core import ( - cache, - client, - compression, - cors, - csrf, - guards, - handlers, - openapi, - response, - security, - static_files, -) +from app.core import cache, client, compression, cors, csrf, guards, openapi, response, security, static_files __all__ = [ "cache", @@ -19,7 +7,6 @@ "csrf", "client", "guards", - "handlers", "openapi", "security", "static_files", diff --git a/src/app/core/compression.py b/src/app/core/compression.py index d2dbe6ed..4b470e17 100644 --- a/src/app/core/compression.py +++ b/src/app/core/compression.py @@ -1,4 +1,4 @@ from starlite.config.compression import CompressionConfig -config = CompressionConfig(backend="gzip") +config = CompressionConfig(backend="brotli") """Default compression config""" diff --git a/src/app/core/csrf.py b/src/app/core/csrf.py index 244e0648..34805a1b 100644 --- a/src/app/core/csrf.py +++ b/src/app/core/csrf.py @@ -3,7 +3,7 @@ from app.config import settings config = CSRFConfig( - secret=settings.app.SECRET_KEY.get_secret_value(), + secret=settings.app.SECRET_KEY.get_secret_value().decode(), cookie_httponly=True, cookie_secure=settings.app.CSRF_COOKIE_SECURE, cookie_name=settings.app.CSRF_COOKIE_NAME, diff --git a/src/app/core/guards.py b/src/app/core/guards.py index 8ec61ac0..b43f901f 100644 --- a/src/app/core/guards.py +++ b/src/app/core/guards.py @@ -1,21 +1,14 @@ -from typing import TYPE_CHECKING, Any, Optional - from pydantic import UUID4 from starlite import BaseRouteHandler, NotAuthorizedException, Request from app import services -if TYPE_CHECKING: - from collections.abc import Callable - - __all__ = [ "requires_active_user", "requires_superuser", "requires_team_membership", "requires_team_ownership", "requires_team_admin", - "CheckPayloadMismatch", ] @@ -53,67 +46,3 @@ def requires_team_ownership(request: Request, _: BaseRouteHandler) -> None: if services.user.is_superuser(request.user) or services.user.is_team_owner(request.user, team_id): return None raise NotAuthorizedException("Insufficient permissions to access team.") - - -class CheckPayloadMismatch: - """Creates a callable class instance that can be used as a Guard function - to check that path variables are equal to payload counterparts. - - Default behaviour is for the path variables to be coerced to a `str` before the - comparison. This supports the common case of comparing a `str` identity from - the payload to a UUID path parameter that has already been parsed into a UUID - object. - - Parameters - ---------- - payload_key : str - Used to extract the value from the payload. If the key does not exist in - the payload the value of the path parameter will be compared against `None`. - path_key : str - Name of the path parameter. This must be the name of a path parameter on - the route to which the guard is applied, otherwise will raise `KeyError` at runtime. - compare_fn : Callable[[Any, Any], bool] | None - For custom comparison logic, pass a two parameter callable here that returns - a `bool`. - """ - - def __init__( - self, - payload_key: str, - path_key: str, - compare_fn: Optional["Callable[[Any, Any], bool]"] = None, - ) -> None: - self.payload_key = payload_key - self.path_key = path_key - if compare_fn is not None: - self.compare_fn = staticmethod(compare_fn) - else: - self.compare_fn = self._compare - - @staticmethod - def _compare(payload_value: Any, path_value: Any) -> bool: - return payload_value == str(path_value) # type:ignore[no-any-return] - - async def __call__(self, request: Request, _: BaseRouteHandler) -> None: - """Ensure value of `self.payload_key` key in request payload matches - the value of `self.path_key` in `Request.path_params`. - - By default, calls `str` on both values before comparing. For custom comparison - provide a callable to `compare_fn` on instantiation. - - Parameters - ---------- - request : Request - _ : BaseRouteHandler - - Raises - ------ - NotAuthorizedException - If the value retrieved from the path does not test equal to the value - retrieved from the request payload. - """ - payload = await request.json() or {} - payload_value = payload.get(self.payload_key) - path_value = str(request.path_params[self.path_key]) - if not self.compare_fn(payload_value, path_value): - raise NotAuthorizedException diff --git a/src/app/core/handlers.py b/src/app/core/handlers.py deleted file mode 100644 index 76374c6f..00000000 --- a/src/app/core/handlers.py +++ /dev/null @@ -1,27 +0,0 @@ -import itertools -from typing import TYPE_CHECKING - -from app.core.guards import CheckPayloadMismatch - -if TYPE_CHECKING: - from starlite.types import Guard - - -def resolve_id_guards(id_guard: str | tuple[str, str] | list[str | tuple[str, str]]) -> list["Guard"]: - """Resolves guards by ID. - - Parameters - ---------- - id_guard a guard id or collection of guard ids - - Returns - ------- - resolved guards. - """ - if isinstance(id_guard, str): - return [CheckPayloadMismatch("id", id_guard).__call__] - - if isinstance(id_guard, tuple): - return [CheckPayloadMismatch(*id_guard)] - - return list(itertools.chain.from_iterable(resolve_id_guards(t) for t in id_guard)) diff --git a/src/app/core/middleware/__init__.py b/src/app/core/middleware/__init__.py new file mode 100644 index 00000000..78f30183 --- /dev/null +++ b/src/app/core/middleware/__init__.py @@ -0,0 +1,3 @@ +from app.core.middleware.db import DatabaseSessionMiddleware + +__all__ = ["DatabaseSessionMiddleware"] diff --git a/src/app/middleware/db.py b/src/app/core/middleware/db.py similarity index 100% rename from src/app/middleware/db.py rename to src/app/core/middleware/db.py diff --git a/src/app/core/openapi.py b/src/app/core/openapi.py index f8c604a0..1cf0a379 100644 --- a/src/app/core/openapi.py +++ b/src/app/core/openapi.py @@ -4,25 +4,6 @@ from app.config import settings from app.core.security import auth -# auth_openapi_components = Components( -# securitySchemes={ -# "AccountLogin": SecurityScheme( -# type="oauth2", -# name="session", -# security_scheme_in="cookie", -# description="OAUTH2 password bearer authentication and authorization.", -# scheme="Bearer", -# bearerFormat="JWT", -# flows=OAuthFlows( -# password=OAuthFlow( -# tokenUrl=paths.urls.ACCESS_TOKEN, -# scopes={}, -# ) -# ), -# ) -# } -# ) - config = OpenAPIConfig( title=settings.openapi.TITLE or settings.app.NAME, version=settings.openapi.VERSION, @@ -33,7 +14,7 @@ security=[auth.security_requirement], ) """ -OpenAPI config for app, see [OpenAPISettings][starlite_bedrock.config.OpenAPISettings] +OpenAPI config for app, see [OpenAPISettings][app.config.OpenAPISettings] Defaults to 'elements' for the documentation. It has an interactive 3.1 compliant web app and Swagger does not yet support 3.1 diff --git a/src/app/core/security.py b/src/app/core/security.py index 71a7f257..9a49e779 100644 --- a/src/app/core/security.py +++ b/src/app/core/security.py @@ -1,46 +1,42 @@ import base64 import logging -from typing import TYPE_CHECKING, Any, Union +from typing import TYPE_CHECKING, Union from passlib.context import CryptContext -from pydantic import UUID4 from starlite import NotAuthorizedException +from starlite_jwt import OAuth2PasswordBearerAuth from app import db, services from app.config import paths, settings -from app.middleware.jwt import OAuth2PasswordBearerAuth from app.utils.asyncer import run_async if TYPE_CHECKING: from pydantic import SecretBytes, SecretStr - from app.models import User + from app.db.models import User logger = logging.getLogger() -async def current_user_from_session(session: dict[str, Any]) -> "User": - user_id = UUID4(session.get("user_id")) if session.get("user_id") else None - if not user_id: - raise NotAuthorizedException - user = await services.user.get_by_id(db.db_session(), user_id) - if user: - return user - raise NotAuthorizedException - - async def current_user_from_token(sub: str) -> "User": user = await services.user.get_by_email(db.db_session(), sub) - if user: + if user and user.is_active: return user - raise NotAuthorizedException + raise NotAuthorizedException("Invalid account name") auth = OAuth2PasswordBearerAuth( # nosec retrieve_user_handler=current_user_from_token, token_secret=settings.app.SECRET_KEY.get_secret_value().decode(), token_url=paths.urls.ACCESS_TOKEN, - exclude=[paths.urls.OPENAPI_SCHEMA, paths.urls.HEALTH, paths.urls.ACCESS_TOKEN, paths.urls.SIGNUP], + exclude=[ + paths.urls.OPENAPI_SCHEMA, + paths.urls.HEALTH, + paths.urls.ACCESS_TOKEN, + paths.urls.SIGNUP, + paths.urls.STATIC, + paths.urls.INDEX, + ], ) password_crypt_context = CryptContext(schemes=["argon2"], deprecated="auto") diff --git a/src/app/core/static_files.py b/src/app/core/static_files.py index 69faec3d..3ecc2267 100644 --- a/src/app/core/static_files.py +++ b/src/app/core/static_files.py @@ -2,5 +2,5 @@ from app.config import paths -config = [StaticFilesConfig(directories=[paths.PUBLIC_DIR, paths.ASSETS_DIR], path=paths.urls.STATIC)] +config = [StaticFilesConfig(directories=[paths.PUBLIC_DIR], path=paths.urls.STATIC)] """Static files config""" diff --git a/src/app/db/__init__.py b/src/app/db/__init__.py index be151bdc..66a1dd07 100644 --- a/src/app/db/__init__.py +++ b/src/app/db/__init__.py @@ -3,7 +3,7 @@ from sqlalchemy.ext.asyncio import async_scoped_session -from app.db import db_types +from app.db import db_types, models, repositories from app.db.engine import async_session_factory, create_async_engine, create_async_session_maker, engine if TYPE_CHECKING: @@ -39,4 +39,6 @@ def db_session() -> "AsyncSession": "AsyncScopedSession", "on_shutdown", "db_session", + "models", + "repositories", ] diff --git a/src/app/db/migrations/env.py b/src/app/db/migrations/env.py index ccf80c36..642f907b 100644 --- a/src/app/db/migrations/env.py +++ b/src/app/db/migrations/env.py @@ -7,7 +7,7 @@ from sqlalchemy.ext.asyncio import async_engine_from_config from app.config import settings -from app.models import BaseModel +from app.db.models import BaseModel if TYPE_CHECKING: from sqlalchemy.engine import Connection diff --git a/src/app/db/migrations/script.py.mako b/src/app/db/migrations/script.py.mako index 976739c7..76ec85a7 100644 --- a/src/app/db/migrations/script.py.mako +++ b/src/app/db/migrations/script.py.mako @@ -13,13 +13,6 @@ from sqlalchemy.dialects import postgresql from app.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime ${imports if imports else ""} -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - - sa.GUID = GUID sa.EmailString = EmailString sa.JsonObject = JsonObject diff --git a/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py b/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py deleted file mode 100644 index 9ca3008a..00000000 --- a/src/app/db/migrations/versions/2022-09-15_e5c9c377ddce.py +++ /dev/null @@ -1,206 +0,0 @@ -# type: ignore -""" - -Revision ID: e5c9c377ddce -Revises: -Create Date: 2022-09-15 12:20:30.527673 - -""" -import sqlalchemy as sa -from alembic import op - -from app.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - - -sa.GUID = GUID -sa.EmailString = EmailString -sa.JsonObject = JsonObject -sa.PydanticType = PydanticType -sa.TimestampAwareDateTime = TimestampAwareDateTime - -# revision identifiers, used by Alembic. -revision = "e5c9c377ddce" -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table( - "team", - sa.Column("name", sa.String(length=255), nullable=False), - sa.Column("description", sa.String(length=500), nullable=True), - sa.Column("is_active", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team")), - sa.UniqueConstraint("id", name=op.f("uq_team_id")), - ) - op.create_index(op.f("ix_team_created_at"), "team", ["created_at"], unique=False) - op.create_index(op.f("ix_team_name"), "team", ["name"], unique=False) - op.create_index(op.f("ix_team_updated_at"), "team", ["updated_at"], unique=False) - op.create_table( - "user_account", - sa.Column("full_name", sa.String(length=255), nullable=True), - sa.Column("email", sa.EmailString(length=255), nullable=False), - sa.Column("hashed_password", sa.String(length=255), nullable=True), - sa.Column("is_active", sa.Boolean(), nullable=False), - sa.Column("is_superuser", sa.Boolean(), nullable=False), - sa.Column("is_verified", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.PrimaryKeyConstraint("id", name=op.f("pk_user_account")), - sa.UniqueConstraint("id", name=op.f("uq_user_account_id")), - comment="User accounts for application access", - ) - op.create_index(op.f("ix_user_account_created_at"), "user_account", ["created_at"], unique=False) - op.create_index(op.f("ix_user_account_email"), "user_account", ["email"], unique=True) - op.create_index(op.f("ix_user_account_updated_at"), "user_account", ["updated_at"], unique=False) - op.create_table( - "team_invitation", - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("email", sa.EmailString(length=255), nullable=False), - sa.Column("role", sa.String(length=50), nullable=False), - sa.Column("is_accepted", sa.Boolean(), nullable=True), - sa.Column("invited_by_id", sa.GUID(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.Column("expires_at", sa.TimestampAwareDateTime(timezone=True), nullable=False), - sa.ForeignKeyConstraint( - ["invited_by_id"], ["user_account.id"], name=op.f("fk_team_invitation_invited_by_id_user_account") - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_invitation_team_id_team")), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team_invitation")), - sa.UniqueConstraint("id", name=op.f("uq_team_invitation_id")), - ) - op.create_index(op.f("ix_team_invitation_created_at"), "team_invitation", ["created_at"], unique=False) - op.create_index(op.f("ix_team_invitation_expires_at"), "team_invitation", ["expires_at"], unique=False) - op.create_index(op.f("ix_team_invitation_updated_at"), "team_invitation", ["updated_at"], unique=False) - op.create_table( - "team_member", - sa.Column("user_id", sa.GUID(), nullable=False), - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("role", sa.String(length=50), nullable=False), - sa.Column("is_owner", sa.Boolean(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_team_member_team_id_team")), - sa.ForeignKeyConstraint(["user_id"], ["user_account.id"], name=op.f("fk_team_member_user_id_user_account")), - sa.PrimaryKeyConstraint("id", name=op.f("pk_team_member")), - sa.UniqueConstraint("id", name=op.f("uq_team_member_id")), - sa.UniqueConstraint("user_id", "team_id", name=op.f("uq_team_member_user_id")), - ) - op.create_index(op.f("ix_team_member_created_at"), "team_member", ["created_at"], unique=False) - op.create_index(op.f("ix_team_member_role"), "team_member", ["role"], unique=False) - op.create_index(op.f("ix_team_member_updated_at"), "team_member", ["updated_at"], unique=False) - op.create_table( - "upload", - sa.Column("file_name", sa.String(length=255), nullable=True), - sa.Column("uploaded_by", sa.String(length=255), nullable=True), - sa.Column("is_processed", sa.Boolean(), nullable=False), - sa.Column("team_id", sa.GUID(), nullable=False), - sa.Column("id", sa.GUID(), nullable=False), - sa.Column( - "created_at", - sa.TimestampAwareDateTime(timezone=True), - server_default=sa.text("now()"), - nullable=False, - comment="Date the record was inserted", - ), - sa.Column( - "updated_at", - sa.TimestampAwareDateTime(timezone=True), - nullable=True, - comment="Date the record was last modified", - ), - sa.ForeignKeyConstraint(["team_id"], ["team.id"], name=op.f("fk_upload_team_id_team"), ondelete="cascade"), - sa.PrimaryKeyConstraint("id", name=op.f("pk_upload")), - sa.UniqueConstraint("id", name=op.f("uq_upload_id")), - comment="Stores links to uploaded files", - ) - op.create_index(op.f("ix_upload_created_at"), "upload", ["created_at"], unique=False) - op.create_index(op.f("ix_upload_file_name"), "upload", ["file_name"], unique=False) - op.create_index(op.f("ix_upload_is_processed"), "upload", ["is_processed"], unique=False) - op.create_index(op.f("ix_upload_updated_at"), "upload", ["updated_at"], unique=False) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f("ix_upload_updated_at"), table_name="upload") - op.drop_index(op.f("ix_upload_is_processed"), table_name="upload") - op.drop_index(op.f("ix_upload_file_name"), table_name="upload") - op.drop_index(op.f("ix_upload_created_at"), table_name="upload") - op.drop_table("upload") - op.drop_index(op.f("ix_team_member_updated_at"), table_name="team_member") - op.drop_index(op.f("ix_team_member_role"), table_name="team_member") - op.drop_index(op.f("ix_team_member_created_at"), table_name="team_member") - op.drop_table("team_member") - op.drop_index(op.f("ix_team_invitation_updated_at"), table_name="team_invitation") - op.drop_index(op.f("ix_team_invitation_expires_at"), table_name="team_invitation") - op.drop_index(op.f("ix_team_invitation_created_at"), table_name="team_invitation") - op.drop_table("team_invitation") - op.drop_index(op.f("ix_user_account_updated_at"), table_name="user_account") - op.drop_index(op.f("ix_user_account_email"), table_name="user_account") - op.drop_index(op.f("ix_user_account_created_at"), table_name="user_account") - op.drop_table("user_account") - op.drop_index(op.f("ix_team_updated_at"), table_name="team") - op.drop_index(op.f("ix_team_name"), table_name="team") - op.drop_index(op.f("ix_team_created_at"), table_name="team") - op.drop_table("team") - # ### end Alembic commands ### diff --git a/src/app/db/migrations/versions/2022-09-24_2aca7639e493.py b/src/app/db/migrations/versions/2022-09-24_2aca7639e493.py new file mode 100644 index 00000000..d0fc9f5d --- /dev/null +++ b/src/app/db/migrations/versions/2022-09-24_2aca7639e493.py @@ -0,0 +1,143 @@ +# type: ignore +""" + +Revision ID: 2aca7639e493 +Revises: +Create Date: 2022-09-24 22:37:46.159101 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +from app.db.db_types import GUID, EmailString, JsonObject, PydanticType, TimestampAwareDateTime + + +sa.GUID = GUID +sa.EmailString = EmailString +sa.JsonObject = JsonObject +sa.PydanticType = PydanticType +sa.TimestampAwareDateTime = TimestampAwareDateTime + +# revision identifiers, used by Alembic. +revision = '2aca7639e493' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('team', + sa.Column('name', sa.String(length=255), nullable=False), + sa.Column('description', sa.String(length=500), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.Column('slug', sa.String(length=100), nullable=False), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team')), + sa.UniqueConstraint('id', name=op.f('uq_team_id')) + ) + op.create_index(op.f('ix_team_created_at'), 'team', ['created_at'], unique=False) + op.create_index(op.f('ix_team_name'), 'team', ['name'], unique=False) + op.create_index(op.f('ix_team_slug'), 'team', ['slug'], unique=True) + op.create_index(op.f('ix_team_updated_at'), 'team', ['updated_at'], unique=False) + op.create_table('user_account', + sa.Column('full_name', sa.String(length=255), nullable=True), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('hashed_password', sa.String(length=255), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('is_superuser', sa.Boolean(), nullable=False), + sa.Column('is_verified', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_user_account')), + sa.UniqueConstraint('id', name=op.f('uq_user_account_id')), + comment='User accounts for application access' + ) + op.create_index(op.f('ix_user_account_created_at'), 'user_account', ['created_at'], unique=False) + op.create_index(op.f('ix_user_account_email'), 'user_account', ['email'], unique=True) + op.create_index(op.f('ix_user_account_updated_at'), 'user_account', ['updated_at'], unique=False) + op.create_table('team_invitation', + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('email', sa.EmailString(length=255), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_accepted', sa.Boolean(), nullable=True), + sa.Column('invited_by_id', sa.GUID(), nullable=False), + sa.Column('invited_by_email', sa.EmailString(length=255), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.Column('expires_at', sa.TimestampAwareDateTime(timezone=True), nullable=False), + sa.ForeignKeyConstraint(['invited_by_id'], ['user_account.id'], name=op.f('fk_team_invitation_invited_by_id_user_account')), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_invitation_team_id_team')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_invitation')), + sa.UniqueConstraint('id', name=op.f('uq_team_invitation_id')) + ) + op.create_index(op.f('ix_team_invitation_created_at'), 'team_invitation', ['created_at'], unique=False) + op.create_index(op.f('ix_team_invitation_expires_at'), 'team_invitation', ['expires_at'], unique=False) + op.create_index(op.f('ix_team_invitation_updated_at'), 'team_invitation', ['updated_at'], unique=False) + op.create_table('team_member', + sa.Column('user_id', sa.GUID(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('role', sa.String(length=50), nullable=False), + sa.Column('is_owner', sa.Boolean(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_team_member_team_id_team')), + sa.ForeignKeyConstraint(['user_id'], ['user_account.id'], name=op.f('fk_team_member_user_id_user_account')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_team_member')), + sa.UniqueConstraint('id', name=op.f('uq_team_member_id')), + sa.UniqueConstraint('user_id', 'team_id', name=op.f('uq_team_member_user_id')) + ) + op.create_index(op.f('ix_team_member_created_at'), 'team_member', ['created_at'], unique=False) + op.create_index(op.f('ix_team_member_role'), 'team_member', ['role'], unique=False) + op.create_index(op.f('ix_team_member_updated_at'), 'team_member', ['updated_at'], unique=False) + op.create_table('upload', + sa.Column('file_name', sa.String(length=255), nullable=True), + sa.Column('uploaded_by', sa.String(length=255), nullable=True), + sa.Column('is_processed', sa.Boolean(), nullable=False), + sa.Column('team_id', sa.GUID(), nullable=False), + sa.Column('id', sa.GUID(), nullable=False), + sa.Column('created_at', sa.TimestampAwareDateTime(timezone=True), server_default=sa.text('now()'), nullable=False, comment='Date the record was inserted'), + sa.Column('updated_at', sa.TimestampAwareDateTime(timezone=True), nullable=True, comment='Date the record was last modified'), + sa.ForeignKeyConstraint(['team_id'], ['team.id'], name=op.f('fk_upload_team_id_team'), ondelete='cascade'), + sa.PrimaryKeyConstraint('id', name=op.f('pk_upload')), + sa.UniqueConstraint('id', name=op.f('uq_upload_id')), + comment='Stores links to uploaded files' + ) + op.create_index(op.f('ix_upload_created_at'), 'upload', ['created_at'], unique=False) + op.create_index(op.f('ix_upload_file_name'), 'upload', ['file_name'], unique=False) + op.create_index(op.f('ix_upload_is_processed'), 'upload', ['is_processed'], unique=False) + op.create_index(op.f('ix_upload_updated_at'), 'upload', ['updated_at'], unique=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_upload_updated_at'), table_name='upload') + op.drop_index(op.f('ix_upload_is_processed'), table_name='upload') + op.drop_index(op.f('ix_upload_file_name'), table_name='upload') + op.drop_index(op.f('ix_upload_created_at'), table_name='upload') + op.drop_table('upload') + op.drop_index(op.f('ix_team_member_updated_at'), table_name='team_member') + op.drop_index(op.f('ix_team_member_role'), table_name='team_member') + op.drop_index(op.f('ix_team_member_created_at'), table_name='team_member') + op.drop_table('team_member') + op.drop_index(op.f('ix_team_invitation_updated_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_expires_at'), table_name='team_invitation') + op.drop_index(op.f('ix_team_invitation_created_at'), table_name='team_invitation') + op.drop_table('team_invitation') + op.drop_index(op.f('ix_user_account_updated_at'), table_name='user_account') + op.drop_index(op.f('ix_user_account_email'), table_name='user_account') + op.drop_index(op.f('ix_user_account_created_at'), table_name='user_account') + op.drop_table('user_account') + op.drop_index(op.f('ix_team_updated_at'), table_name='team') + op.drop_index(op.f('ix_team_slug'), table_name='team') + op.drop_index(op.f('ix_team_name'), table_name='team') + op.drop_index(op.f('ix_team_created_at'), table_name='team') + op.drop_table('team') + # ### end Alembic commands ### diff --git a/src/app/db/models/__init__.py b/src/app/db/models/__init__.py new file mode 100644 index 00000000..c407cc7c --- /dev/null +++ b/src/app/db/models/__init__.py @@ -0,0 +1,7 @@ +# export models here so that are easy to access via `models.*` +from app.db.models.base import BaseModel, meta +from app.db.models.team import Team, TeamInvitation, TeamMember, TeamRoles +from app.db.models.upload import Upload +from app.db.models.user import User + +__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoles", "Upload"] diff --git a/src/app/models/base.py b/src/app/db/models/base.py similarity index 100% rename from src/app/models/base.py rename to src/app/db/models/base.py diff --git a/src/app/models/team.py b/src/app/db/models/team.py similarity index 92% rename from src/app/models/team.py rename to src/app/db/models/team.py index 0b46c5a7..46749033 100644 --- a/src/app/models/team.py +++ b/src/app/db/models/team.py @@ -7,7 +7,7 @@ from sqlalchemy import orm from app.db import db_types as t -from app.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin +from app.db.models.base import BaseModel, CreatedUpdatedAtMixin, ExpiresAtMixin, SlugModelMixin if TYPE_CHECKING: from .upload import Upload @@ -23,7 +23,7 @@ class TeamRoles(str, Enum): MEMBER = "MEMBER" -class Team(BaseModel, CreatedUpdatedAtMixin): +class Team(BaseModel, CreatedUpdatedAtMixin, SlugModelMixin): """Contains collections of Databases. Allows for grouping and permissions to be applied to a set of databases. @@ -39,12 +39,7 @@ class Team(BaseModel, CreatedUpdatedAtMixin): # ORM Relationships # ------------ members: orm.Mapped[list["TeamMember"]] = orm.relationship( - "TeamMember", - back_populates="team", - lazy="subquery", - load_on_pending=True, - cascade="all, delete", - active_history=True, + "TeamMember", back_populates="team", lazy="noload", cascade="all, delete" ) invitations: orm.Mapped[list["TeamInvitation"]] = orm.relationship( "TeamInvitation", back_populates="team", lazy="noload" diff --git a/src/app/models/upload.py b/src/app/db/models/upload.py similarity index 93% rename from src/app/models/upload.py rename to src/app/db/models/upload.py index 721f9a37..638f0815 100644 --- a/src/app/models/upload.py +++ b/src/app/db/models/upload.py @@ -4,7 +4,7 @@ from pydantic import UUID4 from sqlalchemy import orm -from app.models.base import BaseModel, CreatedUpdatedAtMixin +from app.db.models.base import BaseModel, CreatedUpdatedAtMixin if TYPE_CHECKING: from .team import Team diff --git a/src/app/models/user.py b/src/app/db/models/user.py similarity index 84% rename from src/app/models/user.py rename to src/app/db/models/user.py index 64e77e77..97d3b554 100644 --- a/src/app/models/user.py +++ b/src/app/db/models/user.py @@ -5,7 +5,7 @@ from sqlalchemy import orm from app.db import db_types as t -from app.models.base import BaseModel, CreatedUpdatedAtMixin +from app.db.models.base import BaseModel, CreatedUpdatedAtMixin if TYPE_CHECKING: from .team import TeamMember @@ -27,9 +27,5 @@ class User(BaseModel, CreatedUpdatedAtMixin): # ORM Relationships # ------------ teams: orm.Mapped[list["TeamMember"]] = orm.relationship( - "TeamMember", - back_populates="user", - lazy="subquery", - join_depth=1, - cascade="all, delete", + "TeamMember", back_populates="user", lazy="noload", join_depth=1, cascade="all, delete" ) diff --git a/src/app/db/repositories/__init__.py b/src/app/db/repositories/__init__.py new file mode 100644 index 00000000..146beb66 --- /dev/null +++ b/src/app/db/repositories/__init__.py @@ -0,0 +1,15 @@ +from app.db.repositories.base import BaseRepository, LimitOffset +from app.db.repositories.team import TeamRepository +from app.db.repositories.team_invite import TeamInvitationRepository +from app.db.repositories.upload import UploadRepository +from app.db.repositories.user import UserRepository + +__all__ = [ + "BaseRepository", + "UserRepository", + "BaseRepository", + "TeamRepository", + "TeamInvitationRepository", + "UploadRepository", + "LimitOffset", +] diff --git a/src/app/db/repositories/base.py b/src/app/db/repositories/base.py new file mode 100644 index 00000000..83dfb436 --- /dev/null +++ b/src/app/db/repositories/base.py @@ -0,0 +1,335 @@ +import asyncio +import random +import string +from contextlib import contextmanager +from dataclasses import dataclass +from datetime import datetime +from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, TypeVar, Union, overload +from uuid import UUID + +from pydantic import UUID4 +from sqlalchemy.engine import Result +from sqlalchemy.exc import IntegrityError, SQLAlchemyError +from sqlalchemy.sql import Select +from sqlalchemy.sql import func as sql_func +from sqlalchemy.sql import select +from sqlalchemy.sql.selectable import TypedReturnsRows + +from app.db.models.base import DatabaseModelType, DatabaseModelWithCreatedUpdatedAtType, DatabaseModelWithSlugType +from app.utils.text import slugify + +if TYPE_CHECKING: + from sqlalchemy import Executable + from sqlalchemy.ext.asyncio import AsyncSession + +__all__ = [ + "RepositoryNotFoundException", + "RepositoryConflictException", + "RepositoryException", + "ParamType", + "RepositoryType", + "BaseRepository", + "SlugRepositoryMixin", + "LimitOffset", +] + +T = TypeVar("T") +ParamType = TypeVar("ParamType", bound=float | str | UUID | datetime | int) # pylint: disable=[invalid-name] +RepositoryType = TypeVar("RepositoryType", bound="BaseRepository") # pylint: disable=[invalid-name] +TableRowType = TypeVar("TableRowType", bound=tuple[Any, ...]) # pylint: disable=[invalid-name] + + +@dataclass +class LimitOffset: + """ + Data required to add limit/offset filtering to a query. + """ + + limit: int + """Value for `LIMIT` clause of query.""" + offset: int + """Value for `OFFSET` clause of query.""" + + +class RepositoryException(Exception): + """ + Base repository exception type. + """ + + +class RepositoryConflictException(RepositoryException): + """ + Wraps integrity error from database layer. + """ + + +class RepositoryNotFoundException(RepositoryException): + """ + Raised when a method referencing a specific instance by identity is called and no instance with + that identity exists. + """ + + +class RepositoryProtocol(Protocol[DatabaseModelType]): + """_summary_ + + Args: + Protocol (_type_): _description_ + """ + + model_type: type[DatabaseModelType] + """ + A model that extends [`DeclarativeBase`][sqlalchemy.orm.DeclarativeBase]. Must be set by concrete subclasses. + """ + base_error_type: type[Exception] = RepositoryException + """ + Exception type raised when there is not a more specific error to throw. + """ + integrity_error_type: type[Exception] = RepositoryConflictException + """ + Exception type raised when a database layer integrity error is caught. + """ + not_found_error_type: type[Exception] = RepositoryNotFoundException + """ + Exception type raised on access to `scalar()`, `update()` and `delete()` + methods when the select query returns no rows. + Default `RepositoryNotFoundException`. + """ + + @contextmanager + def catch_sqlalchemy_exception(self) -> Any: + """ + Context manager that raises a custom exception chained from an original + [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError]. + + If [`IntegrityError`][sqlalchemy.exc.IntegrityError] is raised, we raise + [`Base.integrity_error_type`][starlite_bedrock.repository.Base.integrity_error_type]. + + Any other [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError] is wrapped in + [`Base.base_error_type`][starlite_bedrock.repository.Base.base_error_type]. + """ + try: + yield + except IntegrityError as e: + raise self.integrity_error_type from e + except SQLAlchemyError as e: + raise self.base_error_type(f"An exception occurred: {e}") from e + + @overload + async def execute( + self, db: "AsyncSession", statement: "TypedReturnsRows[TableRowType]", **kwargs: "Any" + ) -> "Result[TableRowType]": + ... + + @overload + async def execute(self, db: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": + ... + + async def execute(self, db: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": + ... # pragma: no cover + + async def commit(self, db: "AsyncSession") -> None: + with self.catch_sqlalchemy_exception(): + await db.commit() + + async def refresh(self, db: "AsyncSession", db_object: "DatabaseModelType") -> None: + with self.catch_sqlalchemy_exception(): + await db.refresh(db_object) + + async def flush(self, db: "AsyncSession") -> None: + with self.catch_sqlalchemy_exception(): + await db.flush() + + async def get_by_id( + self, db: "AsyncSession", id: "Union[UUID4, int]" # pylint: disable=[redefined-builtin] + ) -> "Optional[DatabaseModelType]": + ... # pragma: no cover + + async def get_one_or_none(self, db: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": + ... # pragma: no cover + + async def select( + self, db: "AsyncSession", statement: "Select", limit_offset: LimitOffset | None = None + ) -> Union[tuple[list[DatabaseModelType], int], List[DatabaseModelType]]: + ... # pragma: no cover + + async def create(self, db: "AsyncSession", db_object: "DatabaseModelType") -> "DatabaseModelType": + ... # pragma: no cover + + async def update(self, db: "AsyncSession", db_object: "DatabaseModelType") -> None: + ... # pragma: no cover + + async def delete(self, db: "AsyncSession", db_object: "DatabaseModelType") -> None: + ... # pragma: no cover + + +class CreatedUpdatedAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithCreatedUpdatedAtType]): + model: type[DatabaseModelWithCreatedUpdatedAtType] + + +class SlugRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSlugType]): + model: type[DatabaseModelWithSlugType] + + async def get_by_slug(self, db: "AsyncSession", slug: str) -> Optional[DatabaseModelWithSlugType]: + ... # pragma: no cover + + +class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): + """Base SQL Alchemy repository.""" + + def __init__(self) -> None: + """ + CRUD object with default methods to create, read, update, delete (CRUD). + """ + self.model = self.model_type + + async def get_one_or_none(self, db: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": + statement.execution_options(populate_existing=True) + results = await self.execute(db, statement) + db_object = results.first() + return db_object[0] if db_object else None + + async def get_by_id( + self, + db: "AsyncSession", + id: "Union[int, UUID4]", # pylint: disable=[redefined-builtin] + options: "Optional[List[Any]]" = None, + ) -> Optional[DatabaseModelType]: + """_summary_ + + Args: + id (Union[int, UUID4]): _description_ + db (AsyncSession, optional): _description_. Defaults to AsyncSession(). + options (Optional[list], optional): _description_. Defaults to None. + + Returns: + Optional[DatabaseModel]: _description_ + """ + options = options or [] + statement = ( + select(self.model).where(self.model.id == id).options(*options).execution_options(populate_existing=True) + ) + + return await self.get_one_or_none(db, statement) + + async def select( + self, + db: "AsyncSession", + statement: Optional[Select] = None, + limit_offset: LimitOffset | None = None, + ) -> Union[list[DatabaseModelType], tuple[list[DatabaseModelType], int]]: + statement = statement or select(self.model).execution_options(populate_existing=True) + if limit_offset: + paginated_statement = statement.offset(limit_offset.offset).limit(limit_offset.limit) + [count, results] = await asyncio.gather(self.count(db, statement), self.execute(db, paginated_statement)) + return [result[0] for result in results.unique().all()], count + else: + results = await self.execute(db, statement) + return [result[0] for result in results.unique().all()] + + async def count(self, db: "AsyncSession", statement: "Select") -> int: + count_statement = statement.with_only_columns( # type: ignore[call-overload] + [sql_func.count()], + maintain_column_froms=True, + ).order_by(None) + results = await self.execute(db, count_statement) + return results.scalar_one() # type: ignore + + async def create( + self, + db: "AsyncSession", + db_object: "DatabaseModelType", + commit: bool = True, + ) -> DatabaseModelType: + db.add(instance=db_object) + if commit: + await self.commit(db) + else: + await self.flush(db) + await self.refresh(db, db_object) + return db_object + + async def create_many( + self, + db: "AsyncSession", + db_objects: List[DatabaseModelType], + commit: bool = True, + ) -> "List[DatabaseModelType]": + """Create Many""" + for db_object in db_objects: + db.add(instance=db_object) + if commit: + await self.commit(db) + else: + await self.flush(db) + return db_objects + + async def update(self, db: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: + db.add(db_object) + if commit: + await self.commit(db) + else: + await db.flush() + await self.refresh(db, db_object) + + async def delete(self, db: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: + with self.catch_sqlalchemy_exception(): + await db.delete(db_object) + if commit: + await self.commit(db) + else: + await self.flush(db) + + async def execute(self, db: "AsyncSession", statement: "Executable", **kwargs: "Any") -> "Result[Any]": + """ + Execute `statement` with [`self.db`][starlite_lib.repository.Base.db]. + + Parameters + ---------- + statement : Executable + Any SQLAlchemy executable type. + **kwargs : Any + Passed as kwargs to [`self.db.execute()`][sqlalchemy.ext.asyncio.AsyncSession.execute] + + Returns + ------- + Result + A set of database results. + """ + with self.catch_sqlalchemy_exception(): + return await db.execute(statement, **kwargs) + + +class SlugRepositoryMixin(SlugRepositoryProtocol, Generic[DatabaseModelWithSlugType]): + """Slug Repository Mixin.""" + + async def get_by_slug( + self, + db: "AsyncSession", + slug: str, + options: "Optional[List[Any]]" = None, + ) -> "Optional[DatabaseModelWithSlugType]": + options = options or [] + statement = ( + select(self.model) + .where(self.model.slug == slug) + .options(*options) + .execution_options(populate_existing=True) + ) + + return await self.get_one_or_none(db, statement) + + async def get_available_slug( + self, + db: "AsyncSession", + value_to_slugify: str, + ) -> str: + slug = slugify(value_to_slugify) + if await self._is_slug_unique(db, slug): + return slug + random_string = "".join(random.choices(string.ascii_lowercase + string.digits, k=4)) # nosec + return f"{slug}-{random_string}" + + async def _is_slug_unique(self, db: "AsyncSession", slug: str) -> bool: + statement = select(self.model.slug).where(self.model.slug == slug) + return await self.get_one_or_none(db, statement) is None diff --git a/src/app/repositories/team.py b/src/app/db/repositories/team.py similarity index 62% rename from src/app/repositories/team.py rename to src/app/db/repositories/team.py index f7a4f870..fe219fd3 100644 --- a/src/app/repositories/team.py +++ b/src/app/db/repositories/team.py @@ -1,5 +1,5 @@ -from app import models -from app.repositories.base import BaseRepository +from app.db import models +from app.db.repositories.base import BaseRepository class TeamRepository(BaseRepository[models.Team]): @@ -10,6 +10,3 @@ class TeamRepository(BaseRepository[models.Team]): """ model_type = models.Team - - -team = TeamRepository() diff --git a/src/app/repositories/team_invite.py b/src/app/db/repositories/team_invite.py similarity index 63% rename from src/app/repositories/team_invite.py rename to src/app/db/repositories/team_invite.py index 3f4c017d..584381bb 100644 --- a/src/app/repositories/team_invite.py +++ b/src/app/db/repositories/team_invite.py @@ -1,5 +1,5 @@ -from app import models -from app.repositories.base import BaseRepository +from app.db import models +from app.db.repositories.base import BaseRepository class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): @@ -10,6 +10,3 @@ class TeamInvitationRepository(BaseRepository[models.TeamInvitation]): """ model_type = models.TeamInvitation - - -team_invite = TeamInvitationRepository() diff --git a/src/app/repositories/upload.py b/src/app/db/repositories/upload.py similarity index 62% rename from src/app/repositories/upload.py rename to src/app/db/repositories/upload.py index 869e557f..c78c3aa1 100644 --- a/src/app/repositories/upload.py +++ b/src/app/db/repositories/upload.py @@ -1,5 +1,5 @@ -from app import models -from app.repositories.base import BaseRepository +from app.db import models +from app.db.repositories.base import BaseRepository class UploadRepository(BaseRepository[models.Upload]): @@ -10,6 +10,3 @@ class UploadRepository(BaseRepository[models.Upload]): """ model_type = models.Upload - - -upload = UploadRepository() diff --git a/src/app/repositories/user.py b/src/app/db/repositories/user.py similarity index 62% rename from src/app/repositories/user.py rename to src/app/db/repositories/user.py index ae9ca826..9215c7a1 100644 --- a/src/app/repositories/user.py +++ b/src/app/db/repositories/user.py @@ -1,5 +1,5 @@ -from app import models -from app.repositories.base import BaseRepository +from app.db import models +from app.db.repositories.base import BaseRepository class UserRepository(BaseRepository[models.User]): @@ -9,6 +9,3 @@ class UserRepository(BaseRepository[models.User]): Args: BaseRepository (_type_): _description_ """ - - -user = UserRepository() diff --git a/src/app/middleware/__init__.py b/src/app/middleware/__init__.py deleted file mode 100644 index baa7d665..00000000 --- a/src/app/middleware/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from app.middleware.db import DatabaseSessionMiddleware -from app.middleware.jwt import OAuth2PasswordBearerAuth - -__all__ = ["DatabaseSessionMiddleware", "OAuth2PasswordBearerAuth"] diff --git a/src/app/middleware/jwt.py b/src/app/middleware/jwt.py deleted file mode 100644 index 7d586c7b..00000000 --- a/src/app/middleware/jwt.py +++ /dev/null @@ -1,153 +0,0 @@ -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import AnyUrl -from pydantic_openapi_schema.v3_1_0 import Components, OAuthFlow, OAuthFlows, SecurityRequirement, SecurityScheme -from starlite import AbstractAuthenticationMiddleware, AuthenticationResult, NotAuthorizedException -from starlite_jwt import JWTAuth -from starlite_jwt.token import Token - -if TYPE_CHECKING: # pragma: no cover - from typing import Any, Awaitable, Callable - - from starlette.requests import HTTPConnection - from starlette.types import ASGIApp - - -class OAuth2PasswordBearerAuth(JWTAuth): - """Basic Oauth2 Schema for Password Bearer Authentication.""" - - openapi_security_scheme_name: str = "AccountLogin" - """ - The value to use for the OpenAPI security scheme and security requirements - """ - token_url: Union[str, AnyUrl] - """ - The URL for retrieving a new token - """ - scopes: Optional[dict[str, str]] = {} - """Scopes available for the token""" - - @property - def oauth_flow(self) -> OAuthFlow: - """Creates an OpenAPI OAuth2 flow for the password bearer authentication - schema. - - Returns: - An [OAuthFlow][pydantic_schema_pydantic.v3_1_0.oauth_flow.OAuthFlow] instance. - """ - return OAuthFlow( - tokenUrl=self.token_url, - scopes=self.scopes, - ) - - @property - def openapi_components(self) -> Components: - """Creates OpenAPI documentation for the JWT auth schema used. - - Returns: - An [Components][pydantic_schema_pydantic.v3_1_0.components.Components] instance. - """ - # todo: this may not be correct - return Components( - securitySchemes={ - self.openapi_security_scheme_name: SecurityScheme( - type="oauth2", - name=self.auth_header, - security_scheme_in="cookie", - description="OAUTH2 password bearer authentication and authorization.", - scheme="Bearer", - bearerFormat="JWT", - flows=OAuthFlows( - password=OAuthFlow( - tokenUrl=self.token_url, - scopes=self.scopes, - ) - ), - ) - } - ) - - @property - def security_requirement(self) -> SecurityRequirement: - """ - Returns: - An OpenAPI 3.1 [SecurityRequirement][pydantic_schema_pydantic.v3_1_0.security_requirement.SecurityRequirement] dictionary. - """ - return {self.openapi_security_scheme_name: []} - - -class JWTAuthenticationMiddleware(AbstractAuthenticationMiddleware): - def __init__( - self, - algorithm: str, - app: "ASGIApp", - auth_header: str, - cookie_name: str, - retrieve_user_handler: "Callable[[str], Awaitable[Any]]", - token_secret: str, - exclude: Optional[Union[str, List[str]]], - ): - """This Class is a Starlite compatible JWT authentication middleware. - - It checks incoming requests for an encoded token in the auth header specified, - and if present retrieves the user from persistence using the provided function. - - Args: - app: An ASGIApp, this value is the next ASGI handler to call in the middleware stack. - retrieve_user_handler: A function that receives an instance of 'Token' and returns a user, which can be - any arbitrary value. - token_secret: Secret for decoding the JWT token. This value should be equivalent to the secret used to encode it. - auth_header: Request header key from which to retrieve the token. E.g. 'Authorization' or 'X-Api-Key'. - algorithm: JWT hashing algorithm to use. - exclude: A pattern or list of patterns to skip. - """ - super().__init__(app=app, exclude=exclude) - self.algorithm = algorithm - self.auth_header = auth_header - self.cookie_name = cookie_name - self.retrieve_user_handler = retrieve_user_handler - self.token_secret = token_secret - - async def authenticate_request(self, connection: "HTTPConnection") -> AuthenticationResult: - """Given an HTTP Connection, parse the JWT api key stored in the header - and retrieve the user correlating to the token from the DB. - - Args: - connection: An Starlette HTTPConnection instance. - - Returns: - AuthenticationResult - - Raises: - [NotAuthorizedException][starlite.exceptions.NotAuthorizedException]: If token is invalid or user is not found. - """ - auth_header: Optional[str] = connection.headers.get(self.auth_header) - auth_cookie: Optional[str] = connection.cookies.get(self.cookie_name) - encoded_token = coalesce([auth_cookie, auth_header]) - if encoded_token: - token = Token.decode( - encoded_token=encoded_token, - secret=self.token_secret, - algorithm=self.algorithm, - ) - user = await self.retrieve_user_handler(token.sub) - - if not user: - raise NotAuthorizedException() - - return AuthenticationResult(user=user, auth=token) - raise NotAuthorizedException("Authorization required to access") - - -def coalesce(iterable: list[Optional[str]], default: str | None = None, pred: "Any" = None) -> str | None: - """Returns the first non-null value in the iterable. - - If no true value is found, returns *default* - - If *pred* is not None, returns the first item - for which pred(item) is true. - - """ - # first_true([a,b,c], x) --> a or b or c or x - # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x - return next(filter(pred, iterable), default) diff --git a/src/app/models/__init__.py b/src/app/models/__init__.py deleted file mode 100644 index bb9b8512..00000000 --- a/src/app/models/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# export models here so that are easy to access via `models.*` -from app.models.base import BaseModel, meta -from app.models.team import Team, TeamInvitation, TeamMember, TeamRoles -from app.models.upload import Upload -from app.models.user import User - -__all__ = ["BaseModel", "meta", "User", "Team", "TeamInvitation", "TeamMember", "TeamRoles", "Upload"] diff --git a/src/app/repositories/__init__.py b/src/app/repositories/__init__.py deleted file mode 100644 index ba85441c..00000000 --- a/src/app/repositories/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -from app.repositories.base import BaseRepository -from app.repositories.team import TeamRepository, team -from app.repositories.team_invite import TeamInvitationRepository, team_invite -from app.repositories.upload import UploadRepository, upload -from app.repositories.user import UserRepository, user - -__all__ = [ - "user", - "BaseRepository", - "UserRepository", - "BaseRepository", - "TeamRepository", - "team", - "TeamInvitationRepository", - "team_invite", - "UploadRepository", - "upload", -] diff --git a/src/app/repositories/base.py b/src/app/repositories/base.py deleted file mode 100644 index a671fb2d..00000000 --- a/src/app/repositories/base.py +++ /dev/null @@ -1,403 +0,0 @@ -import asyncio -import random -import string -from collections import abc -from contextlib import contextmanager -from datetime import datetime, timezone -from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, Tuple, TypeVar, Union, cast, overload -from uuid import UUID - -from pydantic import UUID4 -from sqlalchemy.engine import Result -from sqlalchemy.exc import IntegrityError, SQLAlchemyError -from sqlalchemy.orm import InstrumentedAttribute, RelationshipProperty -from sqlalchemy.sql import Select, delete -from sqlalchemy.sql import func as sql_func -from sqlalchemy.sql import select -from sqlalchemy.sql.selectable import TypedReturnsRows - -from app.models.base import ( - DatabaseModelType, - DatabaseModelWithCreatedUpdatedAtType, - DatabaseModelWithExpiresAtType, - DatabaseModelWithSlugType, -) -from app.utils.text import slugify - -if TYPE_CHECKING: - from sqlalchemy import Executable - from sqlalchemy.ext.asyncio import AsyncSession - -__all__ = [ - "RepositoryNotFoundException", - "RepositoryConflictException", - "RepositoryException", - "ParamType", - "RepositoryType", - "BaseRepository", - "SlugRepositoryMixin", -] - -T = TypeVar("T") -ParamType = TypeVar("ParamType", bound=float | str | UUID | datetime | int) # pylint: disable=[invalid-name] -RepositoryType = TypeVar("RepositoryType", bound="BaseRepository") # pylint: disable=[invalid-name] -TableRowType = TypeVar("TableRowType", bound=tuple[Any, ...]) # pylint: disable=[invalid-name] - - -class RepositoryException(Exception): - """ - Base repository exception type. - """ - - -class RepositoryConflictException(RepositoryException): - """ - Wraps integrity error from database layer. - """ - - -class RepositoryNotFoundException(RepositoryException): - """ - Raised when a method referencing a specific instance by identity is called and no instance with - that identity exists. - """ - - -class RepositoryProtocol(Protocol[DatabaseModelType]): - """_summary_ - - Args: - Protocol (_type_): _description_ - """ - - model_type: type[DatabaseModelType] - """ - A model that extends [`DeclarativeBase`][sqlalchemy.orm.DeclarativeBase]. Must be set by concrete subclasses. - """ - base_error_type: type[Exception] = RepositoryException - """ - Exception type raised when there is not a more specific error to throw. - """ - integrity_error_type: type[Exception] = RepositoryConflictException - """ - Exception type raised when a database layer integrity error is caught. - """ - not_found_error_type: type[Exception] = RepositoryNotFoundException - """ - Exception type raised on access to `scalar()`, `update()` and `delete()` - methods when the select query returns no rows. - Default `RepositoryNotFoundException`. - """ - - @contextmanager - def catch_sqlalchemy_exception(self) -> Any: - """ - Context manager that raises a custom exception chained from an original - [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError]. - - If [`IntegrityError`][sqlalchemy.exc.IntegrityError] is raised, we raise - [`Base.integrity_error_type`][starlite_bedrock.repository.Base.integrity_error_type]. - - Any other [`SQLAlchemyError`][sqlalchemy.exc.SQLAlchemyError] is wrapped in - [`Base.base_error_type`][starlite_bedrock.repository.Base.base_error_type]. - """ - try: - yield - except IntegrityError as e: - raise self.integrity_error_type from e - except SQLAlchemyError as e: - raise self.base_error_type(f"An exception occurred: {e}") from e - - async def paginate( - self, session: "AsyncSession", statement: "Select", limit: int = 10, offset: int = 0 - ) -> "Tuple[List[DatabaseModelType], int]": - ... # pragma: no cover - - @overload - async def execute( - self, session: "AsyncSession", statement: "TypedReturnsRows[TableRowType]", **kwargs: "Any" - ) -> "Result[TableRowType]": - ... - - @overload - async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": - ... - - async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: Any) -> "Result[Any]": - ... # pragma: no cover - - async def commit(self, session: "AsyncSession") -> None: - with self.catch_sqlalchemy_exception(): - await session.commit() - - def order_by(self, statement: "Select", ordering: "List[Tuple[List[str], bool]]") -> "Select": - ... # pragma: no cover - - async def get_by_id( - self, session: "AsyncSession", id: "Union[UUID4, int]" # pylint: disable=[redefined-builtin] - ) -> "Optional[DatabaseModelType]": - ... # pragma: no cover - - async def get_one_or_none(self, session: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": - ... # pragma: no cover - - async def list(self, session: "AsyncSession", statement: "Select") -> "List[DatabaseModelType]": - ... # pragma: no cover - - async def create(self, session: "AsyncSession", db_object: "DatabaseModelType") -> "DatabaseModelType": - ... # pragma: no cover - - async def update(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: - ... # pragma: no cover - - async def delete(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: - ... # pragma: no cover - - -class ExpiresAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithExpiresAtType]): - model: type[DatabaseModelWithExpiresAtType] - - async def delete_expired(self, session: "AsyncSession") -> None: - ... # pragma: no cover - - -class CreatedUpdatedAtRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithCreatedUpdatedAtType]): - model: type[DatabaseModelWithCreatedUpdatedAtType] - - -class SlugRepositoryProtocol(RepositoryProtocol, Protocol[DatabaseModelWithSlugType]): - model: type[DatabaseModelWithSlugType] - - async def get_by_slug( - self, - session: "AsyncSession", - slug: str, - ) -> Optional[DatabaseModelWithSlugType]: - ... # pragma: no cover - - -class BaseRepository(RepositoryProtocol, Generic[DatabaseModelType]): - """Base SQL Alchemy repository.""" - - def __init__(self): - """ - CRUD object with default methods to create, read, update, delete (CRUD). - - # Parameters - - * `model`: A SQLAlchemy model class - """ - self.model = self.model_type - - async def count(self, session: "AsyncSession", statement: "Select") -> int: - count_statement = statement.with_only_columns( # type: ignore[call-overload] - [sql_func.count()], - maintain_column_froms=True, - ).order_by(None) - results = await self.execute(session, count_statement) - return results.scalar_one() # type: ignore - - async def paginate( - self, session: "AsyncSession", statement: "Select", limit: int = 10, offset: int = 0 - ) -> tuple[list[DatabaseModelType], int]: - paginated_statement = statement.offset(offset).limit(limit) - - [count, results] = await asyncio.gather( - self.count(session, statement), self.execute(session, paginated_statement) - ) - - return [result[0] for result in results.unique().all()], count - - def order_by( # noqa: C901 - self, - statement: "Select", - ordering: "List[Tuple[List[str], bool]]", - ) -> "Select": - for (accessors, is_desc) in ordering: - field: InstrumentedAttribute - # Local field - if len(accessors) == 1: - try: - field = getattr(self.model, accessors[0]) - statement = statement.order_by(field.desc() if is_desc else field.asc()) - except AttributeError: - pass - # Relationship field - else: - valid_field = True - model = self.model - for accessor in accessors: - try: - field = getattr(model, accessor) - if isinstance(field.prop, RelationshipProperty): - if field.prop.lazy != "joined": - statement = statement.join(field) - model = field.prop.entity.class_ - except AttributeError: - valid_field = False - break - if valid_field: - statement = statement.order_by(field.desc() if is_desc else field.asc()) - return statement - - async def get_one_or_none(self, session: "AsyncSession", statement: "Select") -> "Optional[DatabaseModelType]": - statement.execution_options(populate_existing=True) - results = await self.execute(session, statement) - db_object = results.first() - if db_object is None: - return None - return cast("DatabaseModelType", db_object[0]) - - async def get_by_id( - self, - session: "AsyncSession", - id: "Union[int, UUID4]", # pylint: disable=[redefined-builtin] - options: "Optional[List[Any]]" = None, - ) -> Optional[DatabaseModelType]: - """_summary_ - - Args: - id (Union[int, UUID4]): _description_ - db (AsyncSession, optional): _description_. Defaults to AsyncSession(). - options (Optional[list], optional): _description_. Defaults to None. - - Returns: - Optional[DatabaseModel]: _description_ - """ - options = options or [] - statement = ( - select(self.model).where(self.model.id == id).options(*options).execution_options(populate_existing=True) - ) - - return await self.get_one_or_none(session, statement) - - async def list(self, session: "AsyncSession", statement: Optional[Select] = None) -> "List[DatabaseModelType]": - statement = statement or select(self.model).execution_options(populate_existing=True) - results = await self.execute(session, statement) - return [result[0] for result in results.unique().all()] - - async def create( - self, - session: "AsyncSession", - db_object: "DatabaseModelType", - commit: bool = True, - ) -> "DatabaseModelType": - session.add(instance=db_object) - if commit: - await self.commit(session) - await self.refresh(session, db_object) - return db_object - - async def create_many( - self, - session: "AsyncSession", - db_objects: "List[DatabaseModelType]", - commit: bool = True, - ) -> "List[DatabaseModelType]": - """Create Many""" - for db_object in db_objects: - session.add(instance=db_object) - if commit: - await self.commit(session) - return db_objects - - @staticmethod - def update_model(model: T, data: abc.Mapping[str, Any]) -> T: - """ - Simple helper for setting key/values from `data` as attributes on `model`. - - Parameters - ---------- - model : T - Model instance to be updated. - data : Mapping[str, Any] - Mapping of data to set as key/value pairs on `model`. - - Returns - ------- - T - Key/value pairs from `data` have been set on the model. - """ - for k, v in data.items(): - setattr(model, k, v) - return model - - async def update(self, session: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: - session.add(db_object) - if commit: - await self.commit(session) - await self.refresh(session, db_object) - - async def delete(self, session: "AsyncSession", db_object: "DatabaseModelType", commit: bool = True) -> None: - with self.catch_sqlalchemy_exception(): - await session.delete(db_object) - if commit: - await self.commit(session) - - async def refresh(self, session: "AsyncSession", db_object: "DatabaseModelType") -> None: - with self.catch_sqlalchemy_exception(): - await session.refresh(db_object) - - async def execute(self, session: "AsyncSession", statement: "Executable", **kwargs: "Any") -> "Result[Any]": - """ - Execute `statement` with [`self.session`][starlite_lib.repository.Base.session]. - - Parameters - ---------- - statement : Executable - Any SQLAlchemy executable type. - **kwargs : Any - Passed as kwargs to [`self.session.execute()`][sqlalchemy.ext.asyncio.AsyncSession.execute] - - Returns - ------- - Result - A set of database results. - """ - with self.catch_sqlalchemy_exception(): - return await session.execute(statement, **kwargs) - - -class SlugRepositoryMixin(SlugRepositoryProtocol, Generic[DatabaseModelWithSlugType]): - """Slug Repository Mixin.""" - - async def get_by_slug( - self, - session: "AsyncSession", - slug: str, - options: "Optional[List[Any]]" = None, - ) -> "Optional[DatabaseModelWithSlugType]": - options = options or [] - statement = ( - select(self.model) - .where(self.model.slug == slug) - .options(*options) - .execution_options(populate_existing=True) - ) - - return await self.get_one_or_none(session, statement) - - async def get_available_slug( - self, - session: "AsyncSession", - value_to_slugify: str, - ) -> str: - slug = slugify(value_to_slugify) - if await self._is_slug_unique(session, slug): - return slug - random_string = "".join(random.choices(string.ascii_lowercase + string.digits, k=4)) # nosec - return f"{slug}-{random_string}" - - async def _is_slug_unique( - self, - session: "AsyncSession", - slug: str, - ) -> bool: - statement = select(self.model.slug).where(self.model.slug == slug) - return await self.get_one_or_none(session, statement) is None - - -class ExpiresAtMixin(ExpiresAtRepositoryProtocol, Generic[DatabaseModelWithExpiresAtType]): - async def delete_expired(self, session: "AsyncSession") -> None: - statement = delete(self.model).where(self.model.expires_at < datetime.now(timezone.utc)) - await self.execute(session, statement) diff --git a/src/app/schemas/team.py b/src/app/schemas/team.py index 9f665a5d..fabb7ce6 100644 --- a/src/app/schemas/team.py +++ b/src/app/schemas/team.py @@ -4,7 +4,7 @@ from pydantic import UUID4, EmailStr, Field -from app import models +from app.db import models from app.schemas.base import CamelizedBaseSchema from app.schemas.team_invite import TeamInvitation # noqa: TC002 from app.schemas.upload import Upload # noqa: TC002 diff --git a/src/app/schemas/team_invite.py b/src/app/schemas/team_invite.py index 1095321b..c39038d0 100644 --- a/src/app/schemas/team_invite.py +++ b/src/app/schemas/team_invite.py @@ -3,7 +3,7 @@ from pydantic import UUID4, EmailStr, Field -from app import models +from app.db import models from app.schemas.base import CamelizedBaseSchema diff --git a/src/app/schemas/user.py b/src/app/schemas/user.py index 507d6597..f7ce8fd2 100644 --- a/src/app/schemas/user.py +++ b/src/app/schemas/user.py @@ -4,7 +4,7 @@ from pydantic import UUID4, EmailStr, root_validator from pydantic.types import SecretStr -from app import models +from app.db import models from app.schemas.base import CamelizedBaseSchema diff --git a/src/app/services/base.py b/src/app/services/base.py index cfc94210..1c549233 100644 --- a/src/app/services/base.py +++ b/src/app/services/base.py @@ -1,16 +1,14 @@ # Standard Library from dataclasses import dataclass -from datetime import datetime -from enum import Enum from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar, Union from uuid import UUID -from pydantic.generics import GenericModel -from sqlalchemy import select +from sqlalchemy import Select, select -from app import models, repositories, schemas +from app import schemas +from app.db import repositories +from app.db.models.base import DatabaseModelType -ModelType = TypeVar("ModelType", bound=models.BaseModel) RepositoryType = TypeVar("RepositoryType", bound=repositories.BaseRepository) CreateSchemaType = TypeVar("CreateSchemaType", bound=schemas.BaseSchema) UpdateSchemaType = TypeVar("UpdateSchemaType", bound=schemas.BaseSchema) @@ -20,47 +18,7 @@ if TYPE_CHECKING: from pydantic import UUID4 from sqlalchemy.ext.asyncio import AsyncSession - - -class TableSortOrder(str, Enum): - ASCENDING = "asc" - DESCENDING = "desc" - - -class TablePageSize(str, Enum): - TEN = 10 - TWENTY_FIVE = 25 - FIFTY = 50 - - -class TotaledResults(GenericModel, Generic[SchemaType]): - """Provides count and result of result set""" - - count: int - results: list[SchemaType] - - -class PaginatedResults(GenericModel, Generic[SchemaType]): - """Provides count, result, and page information of result set""" - - count: int - limit: int - skip: int - results: list[SchemaType] - - -@dataclass -class BeforeAfter: - """ - Data required to filter a query on a `datetime` column. - """ - - field_name: str - """Name of the model attribute to filter on.""" - before: datetime | None - """Filter results where field earlier than this [datetime][datetime.datetime]""" - after: datetime | None - """Filter results where field later than this [datetime][datetime.datetime]""" + from sqlalchemy.sql.base import ExecutableOption @dataclass @@ -75,34 +33,20 @@ class CollectionFilter(Generic[ParamType]): """Values for `IN` clause.""" -@dataclass -class LimitOffset: - """ - Data required to add limit/offset filtering to a query. - """ - - limit: int - """Value for `LIMIT` clause of query.""" - offset: int - """Value for `OFFSET` clause of query.""" - include_count: bool = False - """Should the result set include the total count of the object""" - - -class DataAccessServiceException(Exception): +class BaseRepositoryServiceException(Exception): """Base Data access exception type.""" -class DataAccessService(Generic[ModelType, RepositoryType, CreateSchemaType, UpdateSchemaType]): +class BaseRepositoryService(Generic[DatabaseModelType, RepositoryType, CreateSchemaType, UpdateSchemaType]): """Base class for all Database CRUD operations. This class is used to provide a common interface for all CRUD operations. """ - model: type[ModelType] + model_type: type[DatabaseModelType] repository_type: type[RepositoryType] - def __init__(self, default_options: Optional[list["Any"]] = None) -> None: + def __init__(self, default_options: Optional[list["ExecutableOption"]] = None) -> None: """ CRUD object with default methods to create, read, update, delete (CRUD). @@ -113,11 +57,12 @@ def __init__(self, default_options: Optional[list["Any"]] = None) -> None: """ self.repository = self.repository_type() + self.model = self.model_type self.default_options = default_options if default_options else [] async def get_by_id( self, db: "AsyncSession", id: "UUID4", options: Optional[list["Any"]] = None - ) -> Optional[ModelType]: + ) -> Optional[DatabaseModelType]: """ Obtain model instance by `identifier`. @@ -128,34 +73,11 @@ async def get_by_id( Returns `None` on unsuccessful search`. """ options = options if options else self.default_options - db_obj = await self.repository.get_by_id(db, id, options) - return db_obj or None - - def filter( - self, - id_: UUID | None = None, - id_filter: CollectionFilter[UUID] | None = None, - created_filter: BeforeAfter | None = None, - updated_filter: BeforeAfter | None = None, - limit_offset: LimitOffset | None = None, - **kwargs: Any, - ) -> None: - self.select = select(self.model_type) - if id_: - kwargs.update({self.id_key: id_}) - self.filter_select_by_kwargs(**kwargs) - if id_filter: - self.filter_in_collection(id_filter) - if created_filter: - self.filter_on_datetime_field(created_filter) - if updated_filter: - self.filter_on_datetime_field(updated_filter) - if limit_offset: - self.apply_limit_offset_pagination(limit_offset) + return await self.repository.get_by_id(db, id, options) async def get_one_or_none( self, db: "AsyncSession", *args: Any, options: Optional[list[Any]] = None, **kwargs: Any - ) -> Optional[SchemaType]: + ) -> Optional[DatabaseModelType]: """ Obtain a list of model instances @@ -176,19 +98,16 @@ async def get_one_or_none( .filter_by(**kwargs) .options(*options) .execution_options(populate_existing=True) - ) # this is important! - db_obj = await self.repository.get_one_or_none(db, statement) - return db_obj or None + ) + return await self.repository.get_one_or_none(db, statement) async def get( self, db: "AsyncSession", - *args: Any, - skip: int = 0, - limit: int = 100, - options: Optional[list[Any]] = None, + limit_offset: repositories.LimitOffset | None = None, + options: Optional[list["ExecutableOption"]] = None, **kwargs: Any, - ) -> tuple[list[ModelType], int]: + ) -> Union[list[DatabaseModelType], tuple[list[DatabaseModelType], int]]: """ Obtain a list of model instances @@ -203,58 +122,15 @@ async def get( Returns a paginated response """ options = options if options else self.default_options - - sort = kwargs.pop("sort", None) - order = kwargs.pop("order", None) - sort_by = sort if sort else TableSortOrder.DESCENDING - order_by = self.model.id # default to PK - if order and getattr(self.model, order, None): - order_by = getattr(self.model, order, order_by) - if sort_by == TableSortOrder.ASCENDING: - order_by = order_by.asc() # type: ignore[assignment] - elif sort_by == TableSortOrder.DESCENDING: - order_by = order_by.desc() # type: ignore[assignment] - statement = ( - select(self.model) - .filter(*args) - .filter_by(**kwargs) - .offset(skip) - .limit(limit) - .order_by(order_by) - .options(*options) - .execution_options(populate_existing=True) - ) # this is important! - results, count = await self.repository.paginate(db, statement, limit, skip) - return results, count - - async def list( - self, db: "AsyncSession", *args: Any, options: Optional[list[ExecutableOption]] = None, **kwargs: Any - ) -> list[ModelType]: - """ - Obtain a list of model instances - - Returns all elements as a list. No pagination - - Args: - skip: The offset of the list. - limit: The maximum number of elements in the list. - db: The database session. - Returns: - Returns a paginated response - """ - options = options if options else self.default_options - - statement = ( - select(self.model) - .filter(*args) - .filter_by(**kwargs) - .options(*options) - .execution_options(populate_existing=True) - ) # this is important! - results = await self.repository.list(db, statement) + statement = select(self.model).options(*options).execution_options(populate_existing=True) + statement = self._filter_select_by_kwargs(statement, **kwargs) + if limit_offset: + results, count = await self.repository.select(db, statement, limit_offset=limit_offset) + return results, count + results = await self.repository.select(db, statement) return results - async def create(self, db: "AsyncSession", obj_in: CreateSchemaType) -> ModelType: + async def create(self, db: "AsyncSession", obj_in: CreateSchemaType) -> DatabaseModelType: """Create an instance of the model and insert it into the database. Args: @@ -271,8 +147,8 @@ async def create(self, db: "AsyncSession", obj_in: CreateSchemaType) -> ModelTyp return db_obj async def update( - self, db: "AsyncSession", db_obj: ModelType, obj_in: Union[UpdateSchemaType, dict[str, Any]] - ) -> ModelType: + self, db: "AsyncSession", db_obj: DatabaseModelType, obj_in: Union[UpdateSchemaType, dict[str, Any]] + ) -> DatabaseModelType: """ Update model instance `db_obj` with fields and values specified by `obj_in`. @@ -291,7 +167,7 @@ async def update( await self.repository.update(db, db_obj) return db_obj - async def remove(self, db: "AsyncSession", id: int) -> Optional[ModelType]: + async def delete(self, db: "AsyncSession", id: "UUID4") -> Optional[DatabaseModelType]: """Delete model instance by `identifier`. Args: @@ -304,3 +180,17 @@ async def remove(self, db: "AsyncSession", id: int) -> Optional[ModelType]: if db_obj: await self.repository.delete(db, db_obj) return db_obj or None + + def _filter_select_by_kwargs(self, statement: "Select", **kwargs: Any) -> "Select": + """ + Add a where clause to `self.select` for each key/value pair in `**kwargs` where key should + be an attribute of `model_type` and value is used for an equality test. + + Parameters + ---------- + **kwargs : Any + Keys should be attributes of `model_type`. + """ + for k, v in kwargs.items(): + statement.where(getattr(self.model, k) == v) + return statement diff --git a/src/app/services/team.py b/src/app/services/team.py index d7d701c4..11fa4458 100644 --- a/src/app/services/team.py +++ b/src/app/services/team.py @@ -2,32 +2,45 @@ from sqlalchemy import orm, select -from app import models, repositories, schemas -from app.services.base import DataAccessService, DataAccessServiceException +from app import schemas +from app.db import models, repositories +from app.services.base import BaseRepositoryService, BaseRepositoryServiceException if TYPE_CHECKING: from pydantic import UUID4 from sqlalchemy.ext.asyncio import AsyncSession + from app.db.repositories.base import LimitOffset -class TeamServiceException(DataAccessServiceException): + +class TeamServiceException(BaseRepositoryServiceException): """_summary_""" -class TeamService(DataAccessService[models.Team, repositories.TeamRepository, schemas.TeamCreate, schemas.TeamUpdate]): +class TeamService( + BaseRepositoryService[models.Team, repositories.TeamRepository, schemas.TeamCreate, schemas.TeamUpdate] +): """Handles basic lookup operations for a team""" + model_type = models.Team + repository_type = repositories.TeamRepository + async def create(self, db: "AsyncSession", obj_in: schemas.TeamCreate) -> models.Team: obj_data = obj_in.dict( exclude_unset=True, by_alias=False, exclude_none=True, exclude=["owner_id"] # type: ignore[arg-type] ) team = self.model(**obj_data) team.members.append(models.TeamMember(user_id=obj_in.owner_id, role=models.TeamRoles.ADMIN, is_owner=True)) - return await self.repository.create(db, team) + team = await self.repository.create(db, team) + return team async def get_teams_for_user( - self, db: "AsyncSession", user_id: "UUID4", options: Optional[List[Any]] = None - ) -> List[models.Team]: + self, + db: "AsyncSession", + user_id: "UUID4", + limit_offset: Optional["LimitOffset"] = None, + options: Optional[List[Any]] = None, + ) -> list[models.Team] | tuple[list[models.Team], int]: """Get all workspaces for a user""" options = options if options else self.default_options statement = ( @@ -36,7 +49,7 @@ async def get_teams_for_user( .where(models.TeamMember.user_id == user_id) .options(*options) ) - return await self.repository.list(db, statement) + return await self.repository.select(db, statement, limit_offset) @staticmethod def is_owner(team: models.Team, user_id: int) -> bool: @@ -45,8 +58,6 @@ def is_owner(team: models.Team, user_id: int) -> bool: team = TeamService( - model=models.Team, - repository=repositories.TeamRepository, default_options=[ orm.noload("*"), orm.subqueryload(models.Team.members).options( diff --git a/src/app/services/team_invite.py b/src/app/services/team_invite.py index 18ba198b..956da378 100644 --- a/src/app/services/team_invite.py +++ b/src/app/services/team_invite.py @@ -1,10 +1,11 @@ from sqlalchemy import orm -from app import models, repositories, schemas -from app.services.base import DataAccessService, DataAccessServiceException +from app import schemas +from app.db import models, repositories +from app.services.base import BaseRepositoryService, BaseRepositoryServiceException -class TeamInvitationServiceException(DataAccessServiceException): +class TeamInvitationServiceException(BaseRepositoryServiceException): """_summary_""" @@ -21,7 +22,7 @@ class TeamInvitationEmailMismatchException(TeamInvitationServiceException): class TeamInvitationService( - DataAccessService[ + BaseRepositoryService[ models.TeamInvitation, repositories.TeamInvitationRepository, schemas.TeamInvitationCreate, @@ -30,7 +31,8 @@ class TeamInvitationService( ): """Handles basic lookup operations for an Invitation""" + model_type = models.TeamInvitation + repository_type = repositories.TeamInvitationRepository -team_invite = TeamInvitationService( - model=models.TeamInvitation, repository=repositories.TeamInvitationRepository, default_options=[orm.noload("*")] -) + +team_invite = TeamInvitationService(default_options=[orm.noload("*")]) diff --git a/src/app/services/user.py b/src/app/services/user.py index 7d67dead..e99d53c5 100644 --- a/src/app/services/user.py +++ b/src/app/services/user.py @@ -3,9 +3,10 @@ from sqlalchemy import orm, select from starlite import NotAuthorizedException -from app import models, repositories, schemas +from app import schemas from app.core import security -from app.services.base import DataAccessService, DataAccessServiceException +from app.db import models, repositories +from app.services.base import BaseRepositoryService, BaseRepositoryServiceException from app.services.team_invite import ( TeamInvitationEmailMismatchException, TeamInvitationExpired, @@ -18,7 +19,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -class UserServiceException(DataAccessServiceException): +class UserServiceException(BaseRepositoryServiceException): """_summary_""" @@ -26,9 +27,14 @@ class UserNotFoundException(UserServiceException): """_summary_""" -class UserService(DataAccessService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate]): +class UserService( + BaseRepositoryService[models.User, repositories.UserRepository, schemas.UserCreate, schemas.UserUpdate] +): """Handles database operations for users""" + model_type = models.User + repository_type = repositories.UserRepository + async def exists(self, db: "AsyncSession", username: str) -> bool: statement = select(self.model.id).where(self.model.email == username) return await self.repository.get_one_or_none(db, statement) is not None @@ -56,9 +62,9 @@ async def update_password( self, db: "AsyncSession", obj_in: schemas.UserPasswordUpdate, db_obj: models.User ) -> None: if not await security.verify_password(obj_in.current_password, db_obj.hashed_password): - raise UserPasswordVerifyException + raise NotAuthorizedException("Password failed to match") if not self.is_active(db_obj): - raise UserInactiveException + raise NotAuthorizedException("User account is not active") db_obj.hashed_password = await security.get_password_hash(obj_in.new_password) await self.repository.update(db, db_obj) @@ -92,7 +98,6 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. team_name: str | None = obj_data.pop("team_name", None) obj_data.update({"hashed_password": await security.get_password_hash(password)}) user = self.model(**obj_data) - if team_name: """Create the team the user entered into the form""" team = models.Team(name=team_name) @@ -109,7 +114,8 @@ async def create(self, db: "AsyncSession", obj_in: schemas.UserCreate | schemas. team.members.append(models.TeamMember(user=user, role=invite.role, is_owner=False)) invite.is_accepted = True db.add(invite) # this is automatically committed with the statement below - return await self.repository.create(db, user) + user = await self.repository.create(db, user) + return user @staticmethod def is_verified(db_obj: models.User) -> bool: @@ -145,8 +151,6 @@ def is_team_owner(db_obj: models.User, team_id: "UUID4") -> bool: user = UserService( - model=models.User, - repository=repositories.UserRepository, default_options=[ orm.subqueryload(models.User.teams).options( orm.joinedload(models.TeamMember.team, innerjoin=True).options( diff --git a/src/app/utils/serializers.py b/src/app/utils/serializers.py index 958ea746..2f669b0b 100644 --- a/src/app/utils/serializers.py +++ b/src/app/utils/serializers.py @@ -17,7 +17,7 @@ def _serializer(value: Any) -> Any: if isinstance(value, pgproto.UUID): return str(value) if isinstance(value, SecretBytes): - return value.get_secret_value() + return value.get_secret_value().decode() raise TypeError return orjson.dumps( diff --git a/src/app/utils/text/slugify.py b/src/app/utils/text/slugify.py index ac8730a9..f0d94b1c 100644 --- a/src/app/utils/text/slugify.py +++ b/src/app/utils/text/slugify.py @@ -6,12 +6,22 @@ def slugify(value: str, allow_unicode: bool = False) -> str: - """ + """slugify + Convert to ASCII if 'allow_unicode' is False. Convert spaces or repeated dashes to single dashes. Remove characters that aren't alphanumerics, underscores, or hyphens. Convert to lowercase. Also strip leading and trailing whitespace, dashes, and underscores. + + Args: + value (str): the string to slugify + allow_unicode (bool, optional): allow unicode characters in slug. Defaults to False. + + Returns: + str: a slugified string of the value parameter + """ + if allow_unicode: value = unicodedata.normalize("NFKC", value) else: diff --git a/src/app/web/__init__.py b/src/app/web/__init__.py index e69de29b..bcd489c9 100644 --- a/src/app/web/__init__.py +++ b/src/app/web/__init__.py @@ -0,0 +1,17 @@ +from starlite import Router + +from app.web import routes + +router = Router( + path="", + route_handlers=[ + routes.health_router, + routes.access_router, + routes.user_router, + routes.collection_router, + routes.frontend_router, + ], +) + + +__all__ = ["routes", "router"] diff --git a/src/app/web/assets/.gitkeep b/src/app/web/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/app/web/ts/index.html b/src/app/web/public/index.html similarity index 100% rename from src/app/web/ts/index.html rename to src/app/web/public/index.html diff --git a/src/app/api/routes/__init__.py b/src/app/web/routes/__init__.py similarity index 69% rename from src/app/api/routes/__init__.py rename to src/app/web/routes/__init__.py index 18fdff33..7f9add62 100644 --- a/src/app/api/routes/__init__.py +++ b/src/app/web/routes/__init__.py @@ -1,8 +1,8 @@ from starlite import Router -from app.api.routes import collection, health, user +from app.web.routes import collection, frontend, health, user -__all__ = ["collection_router", "health_router", "access_router", "user_router"] +__all__ = ["collection_router", "health_router", "access_router", "user_router", "frontend_router"] collection_router = Router( path="", @@ -20,3 +20,7 @@ path="", route_handlers=[], ) +frontend_router = Router( + path="", + route_handlers=[frontend.site_index], +) diff --git a/src/app/api/routes/access.py b/src/app/web/routes/access.py similarity index 100% rename from src/app/api/routes/access.py rename to src/app/web/routes/access.py diff --git a/src/app/api/routes/collection.py b/src/app/web/routes/collection.py similarity index 100% rename from src/app/api/routes/collection.py rename to src/app/web/routes/collection.py diff --git a/src/app/web/routes/frontend.py b/src/app/web/routes/frontend.py new file mode 100644 index 00000000..91792344 --- /dev/null +++ b/src/app/web/routes/frontend.py @@ -0,0 +1,19 @@ +import logging + +import anyio +from starlite import MediaType, NotFoundException, Response, get + +from app.config import paths + +logger = logging.getLogger() + + +@get(path=paths.urls.INDEX, media_type=MediaType.HTML, cache=False, tags=["Index"], include_in_schema=False) +async def site_index() -> Response: + """Site index""" + exists = await anyio.Path(paths.PUBLIC_DIR / "index.html").exists() + if exists: + async with await anyio.open_file(anyio.Path(paths.PUBLIC_DIR / "index.html")) as file: + content = await file.read() + return Response(content=content, status_code=200, media_type=MediaType.HTML) + raise NotFoundException("Site index was not found") diff --git a/src/app/api/routes/health.py b/src/app/web/routes/health.py similarity index 100% rename from src/app/api/routes/health.py rename to src/app/web/routes/health.py diff --git a/src/app/api/routes/user.py b/src/app/web/routes/user.py similarity index 100% rename from src/app/api/routes/user.py rename to src/app/web/routes/user.py diff --git a/src/app/web/ts/common/TwLitElement.ts b/src/app/web/ts/common/TwLitElement.ts deleted file mode 100644 index 96e59d1c..00000000 --- a/src/app/web/ts/common/TwLitElement.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { LitElement } from "lit"; - -import { TW } from "../util/TailwindMixin"; - -export const TwLitElement = TW(LitElement) \ No newline at end of file diff --git a/src/app/web/ts/components/HelloWorld.ts b/src/app/web/ts/components/HelloWorld.ts deleted file mode 100644 index 6873745b..00000000 --- a/src/app/web/ts/components/HelloWorld.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { TemplateResult } from "lit"; -import { html } from "lit"; -import { customElement } from "lit/decorators.js"; -import { TwLitElement } from "../common/TwLitElement"; - -@customElement("x-hello-world") -export class HelloWorld extends TwLitElement { - render(): TemplateResult { - return html` `; - } -} diff --git a/src/app/web/ts/pages/IndexPage.ts b/src/app/web/ts/pages/IndexPage.ts deleted file mode 100644 index 13281098..00000000 --- a/src/app/web/ts/pages/IndexPage.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Components -import type { TemplateResult } from "lit"; -import { html } from "lit"; -import { customElement } from "lit/decorators.js"; -import { TwLitElement } from "../common/TwLitElement"; - -import "../components/HelloWorld"; - -@customElement("x-index-page") -export class IndexPage extends TwLitElement { - render(): TemplateResult { - return html` -
- -
- `; - } -} diff --git a/src/app/web/ts/styles/tailwind.global.css b/src/app/web/ts/styles/tailwind.global.css deleted file mode 100644 index 7b47d05d..00000000 --- a/src/app/web/ts/styles/tailwind.global.css +++ /dev/null @@ -1,9 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer components { - .btn { - @apply pt-1 pb-1 pl-4 pr-4 text-purple-300 bg-slate-700; - } -} \ No newline at end of file diff --git a/src/app/web/ts/styles/tailwind.global.css.d.ts b/src/app/web/ts/styles/tailwind.global.css.d.ts deleted file mode 100644 index 5eccfff5..00000000 --- a/src/app/web/ts/styles/tailwind.global.css.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare var style: string -export default style \ No newline at end of file diff --git a/src/app/web/ts/util/TailwindMixin.ts b/src/app/web/ts/util/TailwindMixin.ts deleted file mode 100644 index 5ed7cd5f..00000000 --- a/src/app/web/ts/util/TailwindMixin.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { adoptStyles, LitElement, unsafeCSS } from 'lit' - -import style from '../styles/tailwind.global.css' - -declare global { - /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ - export type LitMixin = new (...args: any[]) => T & LitElement; -} - - -const stylesheet = unsafeCSS(style) - -export const TW = (superClass: T): T => - class extends superClass { - connectedCallback() { - super.connectedCallback(); - adoptStyles(this.shadowRoot, [stylesheet]) - } - }; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 3d0a51a8..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 491ac44e..00000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "es2019", - "module": "es2020", - "lib": ["es2020", "DOM", "DOM.Iterable"], - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "inlineSources": true, - "outDir": "./", - "rootDir": "./src", - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitThis": true, - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "noImplicitOverride": true, - "plugins": [ - { - "name": "ts-lit-plugin", - "strict": true - } - ] - }, - "include": ["vite.config.ts","src/app/web/ts/**/*.ts"] -} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 2584f148..00000000 --- a/vite.config.ts +++ /dev/null @@ -1,108 +0,0 @@ -import vueI18n from "@intlify/vite-plugin-vue-i18n"; -import vue from "@vitejs/plugin-vue"; -import path from "path"; -import { defineConfig } from "vite"; -import eslintPlugin from "vite-plugin-eslint"; - -const Dotenv = require("dotenv"); - -Dotenv.config({ path: path.join(__dirname, ".env") }); - -// function getStaticUrl() { -// return process.env.GLUENT_CONSOLE_STATIC_URL -// } -function getBackendUrl(path) { - return `${ - process.env.GLUENT_CONSOLE_BACKEND_URL || "http://127.0.0.1:8000" - }${path}`; -} -// https://vitejs.dev/config/ -export default defineConfig({ - envPrefix: ["GLUENT_CONSOLE_"], - root: path.join(__dirname, "src/frontend"), - logLevel: "info", - // base: getStaticUrl(), - // publicDir: path.join(__dirname, "src/frontend/public"), - server: { - fs: { - allow: [".", path.join(__dirname, "node_modules")], - }, - port: 3000, - cors: true, - force: true, - strictPort: true, - watch: { - ignored: [ - "**/.venv/**", - "./deploy", - "/docs", - "src/backend/**", - "node_modules", - "scripts", - "**/thirdparty/**", - "**/target/**", - "**/__pycache__/**", - ], - }, - proxy: { - "/api": { - target: getBackendUrl("/api"), - changeOrigin: true, - ws: true, - rewrite: (path) => path.replace(/^\/api/, ""), - }, - "/docs": { - target: getBackendUrl("/docs"), - changeOrigin: true, - ws: true, - rewrite: (path) => path.replace(/^\/docs/, ""), - }, - }, - }, - optimizeDeps: { - include: [ - "vue", - "@headlessui/vue", - "axios", - "pinia", - "@vueuse/head", - "vue-router", - "@heroicons/vue/outline", - "@heroicons/vue/solid", - "chart.js", - ], - }, - plugins: [ - vue(), - eslintPlugin(), - vueI18n({ - include: path.resolve(__dirname, "src/frontend/locales/**"), - }), - ], - build: { - target: "esnext", - outDir: "dist", - emptyOutDir: true, - assetsDir: "assets/", - rollupOptions: { - output: { - manualChunks(id) { - if (id.includes("node_modules")) { - return id - .toString() - .split("node_modules/")[1] - .split("/")[0] - .toString(); - } - }, - }, - }, - }, - resolve: { - alias: { - "@": path.resolve(__dirname, "src/frontend/src/"), - moment: "dayjs", - "vue-i18n": "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js", - }, - }, -}); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index ac47b29a..00000000 --- a/yarn.lock +++ /dev/null @@ -1,5065 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@11ty/dependency-tree@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz#b3c8fa6c91c4a29257e70dd19d26cca75cde89d2" - integrity sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg== - -"@11ty/eleventy-plugin-syntaxhighlight@>=4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-4.1.0.tgz#742fb1910c5f04d76421c6c95c38804b54155fc1" - integrity sha512-bLpV8DKFZRgh0kToh8JPCjABfalL5ydyP6rxj/aUgrlR2v9TheLGRNqoKMhfgwUETOas2nMo/rd7sCE4kSvBNQ== - dependencies: - linkedom "^0.13.2" - prismjs "^1.26.0" - -"@11ty/eleventy-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz#e89dc94b475284e5003525db5078663c5087db82" - integrity sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w== - dependencies: - normalize-path "^3.0.0" - -"@11ty/eleventy@>=1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@11ty/eleventy/-/eleventy-1.0.2.tgz#e8dace170a2dd377fb40465b337bb5f0d17ce6bd" - integrity sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ== - dependencies: - "@11ty/dependency-tree" "^2.0.1" - "@11ty/eleventy-utils" "^1.0.1" - "@iarna/toml" "^2.2.5" - "@sindresorhus/slugify" "^1.1.2" - browser-sync "^2.27.10" - chokidar "^3.5.3" - cross-spawn "^7.0.3" - debug "^4.3.4" - dependency-graph "^0.11.0" - ejs "^3.1.8" - fast-glob "^3.2.11" - graceful-fs "^4.2.10" - gray-matter "^4.0.3" - hamljs "^0.6.2" - handlebars "^4.7.7" - is-glob "^4.0.3" - kleur "^4.1.5" - liquidjs "^9.40.0" - lodash "^4.17.21" - luxon "^2.5.0" - markdown-it "^12.3.2" - minimist "^1.2.6" - moo "^0.5.1" - multimatch "^5.0.0" - mustache "^4.2.0" - normalize-path "^3.0.0" - nunjucks "^3.2.3" - path-to-regexp "^6.2.1" - please-upgrade-node "^3.2.0" - pretty "^2.0.0" - pug "^3.0.2" - recursive-copy "^2.0.14" - semver "^7.3.7" - slugify "^1.6.5" - -"@babel/code-frame@^7.12.11": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.6.0", "@babel/parser@^7.9.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== - -"@babel/runtime@^7.10.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/types@^7.6.1", "@babel/types@^7.9.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@custom-elements-manifest/analyzer@>=0.6.3": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@custom-elements-manifest/analyzer/-/analyzer-0.6.4.tgz#b8814683990cfff4a93c639aa4aadd0ea500cc55" - integrity sha512-yI/D+xl21kDszc8z3S5Oj2lSRBZtYKDf1h41XnSqqGO4Lny+JqQwq5SMHZc5ieS4hDIMR/WK9Jm348TKMZR4ig== - dependencies: - "@custom-elements-manifest/find-dependencies" "^0.0.5" - "@web/config-loader" "0.1.3" - chokidar "3.5.2" - command-line-args "5.1.2" - comment-parser "1.2.4" - custom-elements-manifest "1.0.0" - debounce "1.2.1" - globby "11.0.4" - typescript "~4.3.2" - -"@custom-elements-manifest/find-dependencies@^0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz#ebc11672019de3d52bb8f29f76efe510b8401fbd" - integrity sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg== - dependencies: - es-module-lexer "^0.9.3" - -"@esbuild/android-arm@0.15.9": - version "0.15.9" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.9.tgz#7e1221604ab88ed5021ead74fa8cca4405e1e431" - integrity sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ== - -"@esbuild/linux-loong64@0.15.9": - version "0.15.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz#b658a97babf1f40783354af7039b84c3fdfc3fc3" - integrity sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA== - -"@eslint/eslintrc@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" - integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.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" - -"@esm-bundle/chai@^4.3.4-fix.0": - version "4.3.4-fix.0" - resolved "https://registry.yarnpkg.com/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz#3084cff7eb46d741749f47f3a48dbbdcbaf30a92" - integrity sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw== - dependencies: - "@types/chai" "^4.2.12" - -"@humanwhocodes/config-array@^0.10.5": - version "0.10.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.5.tgz#bb679745224745fff1e9a41961c1d45a49f81c04" - integrity sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - -"@lit/reactive-element@^1.0.0", "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.4.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.4.1.tgz#3f587eec5708692135bc9e94cf396130604979f3" - integrity sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw== - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@open-wc/chai-dom-equals@^0.12.36": - version "0.12.36" - resolved "https://registry.yarnpkg.com/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.36.tgz#ed0eb56b9e98c4d7f7280facce6215654aae9f4c" - integrity sha512-Gt1fa37h4rtWPQGETSU4n1L678NmMi9KwHM1sH+JCGcz45rs8DBPx7MUVeGZ+HxRlbEI5t9LU2RGGv6xT2OlyA== - dependencies: - "@open-wc/semantic-dom-diff" "^0.13.16" - "@types/chai" "^4.1.7" - -"@open-wc/dedupe-mixin@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.3.1.tgz#5c1a1eeb0386b344290ebe3f1fca0c4869933dbf" - integrity sha512-ukowSvzpZQDUH0Y3znJTsY88HkiGk3Khc0WGpIPhap1xlerieYi27QBg6wx/nTurpWfU6XXXsx9ocxDYCdtw0Q== - -"@open-wc/scoped-elements@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-2.1.3.tgz#c4f06fa16091c6ebf2a69b3f40afc03821f42535" - integrity sha512-WoQD5T8Me9obek+iyjgrAMw9wxZZg4ytIteIN1i9LXW2KohezUp0LTOlWgBajWJo0/bpjUKiODX73cMYL2i3hw== - dependencies: - "@lit/reactive-element" "^1.0.0" - "@open-wc/dedupe-mixin" "^1.3.0" - -"@open-wc/semantic-dom-diff@^0.13.16": - version "0.13.21" - resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz#718b9ec5f9a98935fc775e577ad094ae8d8b7dea" - integrity sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg== - -"@open-wc/semantic-dom-diff@^0.19.7": - version "0.19.7" - resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.19.7.tgz#92361f0d2dcb54a8d5cf11d5ea40b8e7ffa58eb4" - integrity sha512-ahwHb7arQXXnkIGCrOsM895FJQrU47VWZryCsSSzl5nB3tJKcJ8yjzQ3D/yqZn6v8atqOz61vaY05aNsqoz3oA== - dependencies: - "@types/chai" "^4.3.1" - "@web/test-runner-commands" "^0.6.1" - -"@open-wc/testing-helpers@^2.1.2": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-2.1.3.tgz#85a133ac8637ed1d880d523b07650788eab4a128" - integrity sha512-hQujGaWncmWLx/974jq5yf2jydBNNTwnkISw2wLGiYgX34+3R6/ns301Oi9S3Il96Kzd8B7avdExp/gDgqcF5w== - dependencies: - "@open-wc/scoped-elements" "^2.1.3" - lit "^2.0.0" - lit-html "^2.0.0" - -"@open-wc/testing@>=3.1.5": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-3.1.6.tgz#89f71710e5530d74f0c478b0a9239d68dcdb9f5e" - integrity sha512-MIf9cBtac4/UBE5a+R5cXiRhOGfzetsV+ZPFc188AfkPDPbmffHqjrRoCyk4B/qS6fLEulSBMLSaQ+6ze971gQ== - dependencies: - "@esm-bundle/chai" "^4.3.4-fix.0" - "@open-wc/chai-dom-equals" "^0.12.36" - "@open-wc/semantic-dom-diff" "^0.19.7" - "@open-wc/testing-helpers" "^2.1.2" - "@types/chai" "^4.2.11" - "@types/chai-dom" "^0.0.12" - "@types/sinon-chai" "^3.2.3" - chai-a11y-axe "^1.3.2" - -"@sindresorhus/slugify@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.2.tgz#c2c0129298b8caace2d9156176fe244d0e83156c" - integrity sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA== - dependencies: - "@sindresorhus/transliterate" "^0.1.1" - escape-string-regexp "^4.0.0" - -"@sindresorhus/transliterate@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz#ffce368271d153550e87de81486004f2637425af" - integrity sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w== - dependencies: - escape-string-regexp "^2.0.0" - lodash.deburr "^4.1.0" - -"@socket.io/component-emitter@~3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" - integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== - -"@types/accepts@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== - dependencies: - "@types/node" "*" - -"@types/babel__code-frame@^7.0.2": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz#eda94e1b7c9326700a4b69c485ebbc9498a0b63f" - integrity sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw== - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/chai-dom@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/chai-dom/-/chai-dom-0.0.12.tgz#fdd7a52bed4dd235ed1c94d3d2d31d4e7db1d03a" - integrity sha512-4rE7sDw713cV61TYzQbMrPjC4DjNk3x4vk9nAVRNXcSD4p0/5lEEfm0OgoCz5eNuWUXNKA0YiKiH/JDTuKivkA== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.1.7", "@types/chai@^4.2.11", "@types/chai@^4.2.12", "@types/chai@^4.3.1": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" - integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== - -"@types/co-body@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/co-body/-/co-body-6.1.0.tgz#b52625390eb0d113c9b697ea92c3ffae7740cdb9" - integrity sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w== - dependencies: - "@types/node" "*" - "@types/qs" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" - integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== - -"@types/convert-source-map@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/convert-source-map/-/convert-source-map-1.5.2.tgz#318dc22d476632a4855594c16970c6dc3ed086e7" - integrity sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg== - -"@types/cookie@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" - integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== - -"@types/cookies@*": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" - integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/cors@^2.8.12": - version "2.8.12" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" - integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== - -"@types/debounce@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.2.1.tgz#79b65710bc8b6d44094d286aecf38e44f9627852" - integrity sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA== - -"@types/express-serve-static-core@^4.17.18": - version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" - integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" - integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/http-assert@*": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" - integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== - -"@types/http-errors@*": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.2.tgz#7315b4c4c54f82d13fa61c228ec5c2ea5cc9e0e1" - integrity sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.11.6": - version "2.13.5" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.5.tgz#64b3ca4d54e08c0062e89ec666c9f45443b21a61" - integrity sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*", "@types/node@>=10.0.0": - version "18.7.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.20.tgz#d9442de7b5cb166476340b4271b15300fe058a39" - integrity sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ== - -"@types/parse5@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/serve-static@*": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/sinon-chai@^3.2.3": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" - integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - -"@types/sinon@*": - version "10.0.13" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - -"@types/trusted-types@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" - integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== - -"@types/ws@^7.4.0": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@>=5.25.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" - integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== - dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/type-utils" "5.38.0" - "@typescript-eslint/utils" "5.38.0" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@>=5.25.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" - integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== - dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" - integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== - dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" - -"@typescript-eslint/type-utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" - integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== - dependencies: - "@typescript-eslint/typescript-estree" "5.38.0" - "@typescript-eslint/utils" "5.38.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" - integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== - -"@typescript-eslint/typescript-estree@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" - integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== - dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" - integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" - integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== - dependencies: - "@typescript-eslint/types" "5.38.0" - eslint-visitor-keys "^3.3.0" - -"@web/browser-logs@^0.2.1": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@web/browser-logs/-/browser-logs-0.2.5.tgz#0895efb641eacb0fbc1138c6092bd18c01df2734" - integrity sha512-Qxo1wY/L7yILQqg0jjAaueh+tzdORXnZtxQgWH23SsTCunz9iq9FvsZa8Q5XlpjnZ3vLIsFEuEsCMqFeohJnEg== - dependencies: - errorstacks "^2.2.0" - -"@web/config-loader@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" - integrity sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ== - dependencies: - semver "^7.3.4" - -"@web/dev-server-core@^0.3.18": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.19.tgz#b61f9a0b92351371347a758b30ba19e683c72e94" - integrity sha512-Q/Xt4RMVebLWvALofz1C0KvP8qHbzU1EmdIA2Y1WMPJwiFJFhPxdr75p9YxK32P2t0hGs6aqqS5zE0HW9wYzYA== - dependencies: - "@types/koa" "^2.11.6" - "@types/ws" "^7.4.0" - "@web/parse5-utils" "^1.2.0" - chokidar "^3.4.3" - clone "^2.1.2" - es-module-lexer "^1.0.0" - get-stream "^6.0.0" - is-stream "^2.0.0" - isbinaryfile "^4.0.6" - koa "^2.13.0" - koa-etag "^4.0.0" - koa-send "^5.0.1" - koa-static "^5.0.0" - lru-cache "^6.0.0" - mime-types "^2.1.27" - parse5 "^6.0.1" - picomatch "^2.2.2" - ws "^7.4.2" - -"@web/parse5-utils@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" - integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg== - dependencies: - "@types/parse5" "^6.0.1" - parse5 "^6.0.1" - -"@web/test-runner-commands@^0.6.1": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@web/test-runner-commands/-/test-runner-commands-0.6.5.tgz#69a2a06b52fd9d329f9cf1e172cd8fb1d5ffc521" - integrity sha512-W+wLg10jEAJY9N6tNWqG1daKmAzxGmTbO/H9fFfcgOgdxdn+hHiR4r2/x1iylKbFLujHUQlnjNQeu2d6eDPFqg== - dependencies: - "@web/test-runner-core" "^0.10.27" - mkdirp "^1.0.4" - -"@web/test-runner-core@^0.10.27": - version "0.10.27" - resolved "https://registry.yarnpkg.com/@web/test-runner-core/-/test-runner-core-0.10.27.tgz#8d1430f2364fb36b3ac15b9b43034fae9d94e177" - integrity sha512-ClV/hSxs4wDm/ANFfQOdRRFb/c0sYywC1QfUXG/nS4vTp3nnt7x7mjydtMGGLmvK9f6Zkubkc1aa+7ryfmVwNA== - dependencies: - "@babel/code-frame" "^7.12.11" - "@types/babel__code-frame" "^7.0.2" - "@types/co-body" "^6.1.0" - "@types/convert-source-map" "^1.5.1" - "@types/debounce" "^1.2.0" - "@types/istanbul-lib-coverage" "^2.0.3" - "@types/istanbul-reports" "^3.0.0" - "@web/browser-logs" "^0.2.1" - "@web/dev-server-core" "^0.3.18" - chokidar "^3.4.3" - cli-cursor "^3.1.0" - co-body "^6.1.0" - convert-source-map "^1.7.0" - debounce "^1.2.0" - dependency-graph "^0.11.0" - globby "^11.0.1" - ip "^1.1.5" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.0.2" - log-update "^4.0.0" - nanocolors "^0.2.1" - nanoid "^3.1.25" - open "^8.0.2" - picomatch "^2.2.2" - source-map "^0.7.3" - -a-sync-waterfall@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" - integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== - -abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@^1.3.5, accepts@~1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-node@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0, acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-back@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^6.1.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" - integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - integrity sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ== - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.3, asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -assert-never@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" - integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each-series@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" - integrity sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ== - -async@^2.6.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@>=10.4.2: - version "10.4.12" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.12.tgz#183f30bf0b0722af54ee5ef257f7d4320bb33129" - integrity sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q== - dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001407" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -axe-core@^4.3.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" - integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== - -axios@0.21.4: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -babel-walk@3.0.0-canary-5: - version "3.0.0-canary-5" - resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" - integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== - dependencies: - "@babel/types" "^7.9.6" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-sync-client@^2.27.10: - version "2.27.10" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.27.10.tgz#f06233ea66bd873b96664f001cbc49035022634d" - integrity sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ== - dependencies: - etag "1.8.1" - fresh "0.5.2" - mitt "^1.1.3" - rxjs "^5.5.6" - typescript "^4.6.2" - -browser-sync-ui@^2.27.10: - version "2.27.10" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz#59dd6e436e17b743c99094ff5129306ab7ab5b79" - integrity sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw== - dependencies: - async-each-series "0.1.1" - connect-history-api-fallback "^1" - immutable "^3" - server-destroy "1.0.1" - socket.io-client "^4.4.1" - stream-throttle "^0.1.3" - -browser-sync@^2.27.10: - version "2.27.10" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.27.10.tgz#3568d4f66afb0f68fee4a10902ecbbe8b2f680dd" - integrity sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw== - dependencies: - browser-sync-client "^2.27.10" - browser-sync-ui "^2.27.10" - bs-recipes "1.3.4" - bs-snippet-injector "^2.0.1" - chokidar "^3.5.1" - connect "3.6.6" - connect-history-api-fallback "^1" - dev-ip "^1.0.1" - easy-extender "^2.3.4" - eazy-logger "3.1.0" - etag "^1.8.1" - fresh "^0.5.2" - fs-extra "3.0.1" - http-proxy "^1.18.1" - immutable "^3" - localtunnel "^2.0.1" - micromatch "^4.0.2" - opn "5.3.0" - portscanner "2.2.0" - qs "6.2.3" - raw-body "^2.3.2" - resp-modifier "6.0.2" - rx "4.1.0" - send "0.16.2" - serve-index "1.9.1" - serve-static "1.13.2" - server-destroy "1.0.1" - socket.io "^4.4.1" - ua-parser-js "1.0.2" - yargs "^17.3.1" - -browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -bs-recipes@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" - integrity sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw== - -bs-snippet-injector@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" - integrity sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407: - version "1.0.30001411" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz#303c8594ca5903b193a6d875ac613548cb73379a" - integrity sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g== - -chai-a11y-axe@^1.3.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/chai-a11y-axe/-/chai-a11y-axe-1.4.0.tgz#e584af967727a8656e27c32e845f5db21f2bf2e0" - integrity sha512-m7J6DVAl1ePL2ifPKHmwQyHXdCZ+Qfv+qduh6ScqcDfBnJEzpV1K49TblujM45j1XciZOFeFNqMb2sShXMg/mw== - dependencies: - axe-core "^4.3.3" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" - integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== - dependencies: - is-regex "^1.0.3" - -chokidar@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^3.4.3, chokidar@^3.5.1, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -co-body@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.1.0.tgz#d87a8efc3564f9bfe3aced8ef5cd04c7a8766547" - integrity sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ== - dependencies: - inflation "^2.0.0" - qs "^6.5.2" - raw-body "^2.3.3" - type-is "^1.6.16" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.1.4, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -command-line-args@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.2.tgz#25908e573d2214bc23a8437e3df853b02dffa425" - integrity sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA== - dependencies: - array-back "^6.1.2" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -commander@^2.19.0, commander@^2.2.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -comment-parser@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" - integrity sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -condense-newlines@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" - integrity sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg== - dependencies: - extend-shallow "^2.0.1" - is-whitespace "^0.3.0" - kind-of "^3.0.2" - -config-chain@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -connect-history-api-fallback@^1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -connect@3.6.6: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - integrity sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -constantinople@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" - integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== - dependencies: - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.1" - -content-disposition@~0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookies@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" - integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -cors@~2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -custom-elements-manifest@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz#b35c2129076a1dc9f95d720c6f7b5b71a857274b" - integrity sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A== - -debounce@1.2.1, debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -dependency-graph@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" - integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== - -destroy@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== - -detective@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" - integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== - dependencies: - acorn-node "^1.8.2" - defined "^1.0.0" - minimist "^1.2.6" - -dev-ip@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" - integrity sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A== - -didyoumean2@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/didyoumean2/-/didyoumean2-4.1.0.tgz#f813cb7c82c249443e599be077f76e88f24b85e4" - integrity sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig== - dependencies: - "@babel/runtime" "^7.10.2" - leven "^3.1.0" - lodash.deburr "^4.1.0" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -doctypes@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" - integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -easy-extender@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" - integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== - dependencies: - lodash "^4.17.10" - -eazy-logger@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" - integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== - dependencies: - tfunk "^4.0.0" - -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.251: - version "1.4.261" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz#31f14ad60c6f95bec404a77a2fd5e1962248e112" - integrity sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@^1.0.2, encodeurl@~1.0.1, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -engine.io-client@~6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.2.2.tgz#c6c5243167f5943dcd9c4abee1bfc634aa2cbdd0" - integrity sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - engine.io-parser "~5.0.3" - ws "~8.2.3" - xmlhttprequest-ssl "~2.0.0" - -engine.io-parser@~5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" - integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== - -engine.io@~6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0" - integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== - dependencies: - "@types/cookie" "^0.4.1" - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - cors "~2.8.5" - debug "~4.3.1" - engine.io-parser "~5.0.3" - ws "~8.2.3" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -errno@^0.1.2: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -errorstacks@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/errorstacks/-/errorstacks-2.4.0.tgz#2155674dd9e741aacda3f3b8b967d9c40a4a0baf" - integrity sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ== - -es-module-lexer@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-module-lexer@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.0.3.tgz#f0d8d35b36d13024110000d5e6fadc8eeaeb66b8" - integrity sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw== - -esbuild-android-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz#4a7eb320ca8d3a305f14792061fd9614ccebb7c0" - integrity sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw== - -esbuild-android-arm64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz#c948e5686df20857ad361ec67e070d40d7cab985" - integrity sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg== - -esbuild-darwin-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz#25f564fa4b39c1cec84dc46bce5634fdbce1d5e4" - integrity sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ== - -esbuild-darwin-arm64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz#60faea3ed95d15239536aa88d06bb82b29278a86" - integrity sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw== - -esbuild-freebsd-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz#0339ef1c90a919175e7816788224517896657a0e" - integrity sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A== - -esbuild-freebsd-arm64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz#32abfc0be3ae3dd38e5a86a9beadbbcf592f1b57" - integrity sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA== - -esbuild-linux-32@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz#93581348a4da7ed2b29bc5539f2605ad7fcee77b" - integrity sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg== - -esbuild-linux-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz#0d171e7946c95d0d3ed4826026af2c5632d7dcc4" - integrity sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ== - -esbuild-linux-arm64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz#9838795a3720cbe736d3bc20621bd366eac22f24" - integrity sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ== - -esbuild-linux-arm@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz#dce96cd817bc7376f6af3967649c4ab1f2f79506" - integrity sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ== - -esbuild-linux-mips64le@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz#0335a0739e61aa97cb9b4a018e3facfcca9cdcfd" - integrity sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw== - -esbuild-linux-ppc64le@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz#18482afb95b8a705e2da0a59d7131bff221281f9" - integrity sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw== - -esbuild-linux-riscv64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz#03b6f9708272c117006b9ce1c9ae8aab91b5a5b6" - integrity sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA== - -esbuild-linux-s390x@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz#65fb645623d575780f155f0ee52935e62f9cca4f" - integrity sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw== - -esbuild-netbsd-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz#7894297bb9e11f3d2f6f31efecd1be4e181f0d54" - integrity sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw== - -esbuild-openbsd-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz#0f9d4c6b6772ae50d491d68ad4cc028300dda7c0" - integrity sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A== - -esbuild-sunos-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz#c32b7ce574b08f814de810ce7c1e34b843768126" - integrity sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ== - -esbuild-windows-32@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz#37a8f7cfccdb2177cd46613a1a1e1fcb419d36df" - integrity sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA== - -esbuild-windows-64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz#5fe1e76fc13dd7f520febecaea110b6f1649c7b2" - integrity sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg== - -esbuild-windows-arm64@0.15.9: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz#98504428f7ba7d2cfc11940be68ee1139173fdce" - integrity sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA== - -esbuild@^0.15.6: - version "0.15.9" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.9.tgz#33fb18b67b85004b6f7616bec955ca4b3e58935d" - integrity sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg== - optionalDependencies: - "@esbuild/android-arm" "0.15.9" - "@esbuild/linux-loong64" "0.15.9" - esbuild-android-64 "0.15.9" - esbuild-android-arm64 "0.15.9" - esbuild-darwin-64 "0.15.9" - esbuild-darwin-arm64 "0.15.9" - esbuild-freebsd-64 "0.15.9" - esbuild-freebsd-arm64 "0.15.9" - esbuild-linux-32 "0.15.9" - esbuild-linux-64 "0.15.9" - esbuild-linux-arm "0.15.9" - esbuild-linux-arm64 "0.15.9" - esbuild-linux-mips64le "0.15.9" - esbuild-linux-ppc64le "0.15.9" - esbuild-linux-riscv64 "0.15.9" - esbuild-linux-s390x "0.15.9" - esbuild-netbsd-64 "0.15.9" - esbuild-openbsd-64 "0.15.9" - esbuild-sunos-64 "0.15.9" - esbuild-windows-32 "0.15.9" - esbuild-windows-64 "0.15.9" - esbuild-windows-arm64 "0.15.9" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-plugin-lit@>=1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz#e1f51fe9e580d4095b58cc4bc4dc6b44409af6b0" - integrity sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ== - dependencies: - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - requireindex "^1.2.0" - -eslint-plugin-wc@>=1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-wc/-/eslint-plugin-wc-1.3.2.tgz#8e3785221851c4c226f6a5411f566b1bd7de33f3" - integrity sha512-/Tt3kIXBp1jh06xYtRqPwAvpNxVVk9YtbcFCKEgLa5l3GY+urZyn376pISaaZxkm9HVD3AIPOF5i9/uFwyF0Zw== - dependencies: - is-valid-element-name "^1.0.0" - js-levenshtein-esm "^1.2.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@>=8.8.0: - version "8.24.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" - integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== - dependencies: - "@eslint/eslintrc" "^1.3.2" - "@humanwhocodes/config-array" "^0.10.5" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" - "@humanwhocodes/module-importer" "^1.0.1" - ajv "^6.10.0" - 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.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - 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.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-sdsl "^4.1.4" - 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.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@1.8.1, etag@^1.8.1, etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.2, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - 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" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - integrity sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw== - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2, fresh@^0.5.2, fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - 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" - -glob@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globby@11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.0.1, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - 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" - -graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -hamljs@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/hamljs/-/hamljs-0.6.2.tgz#7b7116cf6dbe7278e42b3f6ef8725a33e177c8e3" - integrity sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg== - -handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-escaper@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6" - integrity sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ== - -htmlparser2@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -http-assert@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" - integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== - dependencies: - deep-equal "~1.0.1" - http-errors "~1.8.0" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore@^5.1.4, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -immutable@^3: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflation@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" - integrity sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-expression@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" - integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== - dependencies: - acorn "^7.1.1" - object-assign "^4.1.1" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number-like@^1.0.3: - version "1.0.8" - resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" - integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== - dependencies: - lodash.isfinite "^3.3.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-regex@^1.0.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-valid-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz#26ef3fd76cdf1f122d105406e32d35b0de005981" - integrity sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw== - dependencies: - is-potential-custom-element-name "^1.0.0" - -is-whitespace@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" - integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^4.0.6: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-reports@^3.0.2: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -js-beautify@^1.6.12: - version "1.14.6" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.6.tgz#b23ca5d74a462c282c7711bb51150bcc97f2b507" - integrity sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw== - dependencies: - config-chain "^1.1.13" - editorconfig "^0.15.3" - glob "^8.0.3" - nopt "^6.0.0" - -js-levenshtein-esm@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz#96532c34e0c90df198c9419963c64ca3cf43ae92" - integrity sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ== - -js-sdsl@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6" - integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw== - -js-stringify@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" - integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w== - optionalDependencies: - graceful-fs "^4.1.6" - -jstransformer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" - integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== - dependencies: - is-promise "^2.0.0" - promise "^7.0.1" - -junk@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" - integrity sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w== - -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== - dependencies: - tsscmp "1.0.6" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== - -koa-convert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" - integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== - dependencies: - co "^4.6.0" - koa-compose "^4.1.0" - -koa-etag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" - integrity sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg== - dependencies: - etag "^1.8.1" - -koa-send@^5.0.0, koa-send@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" - integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== - dependencies: - debug "^4.1.1" - http-errors "^1.7.3" - resolve-path "^1.4.0" - -koa-static@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" - integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== - dependencies: - debug "^3.1.0" - koa-send "^5.0.0" - -koa@^2.13.0: - version "2.13.4" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.4.tgz#ee5b0cb39e0b8069c38d115139c774833d32462e" - integrity sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g== - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.8.0" - debug "^4.3.2" - delegates "^1.0.0" - depd "^2.0.0" - destroy "^1.0.4" - encodeurl "^1.0.2" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^2.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.0.5, lilconfig@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== - -limiter@^1.0.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" - integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== - -linkedom@^0.13.2: - version "0.13.7" - resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.13.7.tgz#5d5584e73415911ac387a2794acd61933699e477" - integrity sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg== - dependencies: - css-select "^4.2.1" - cssom "^0.5.0" - html-escaper "^3.0.3" - htmlparser2 "^7.2.0" - uhyphen "^0.1.0" - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - -liquidjs@^9.40.0: - version "9.42.0" - resolved "https://registry.yarnpkg.com/liquidjs/-/liquidjs-9.42.0.tgz#e0d98730c0bf410320970c6046c819716de90fd1" - integrity sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow== - -lit-analyzer@>=0.0.6: - version "1.2.1" - resolved "https://registry.yarnpkg.com/lit-analyzer/-/lit-analyzer-1.2.1.tgz#725331a4019ae870dd631d4dd709d39a237161ea" - integrity sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg== - dependencies: - chalk "^2.4.2" - didyoumean2 "4.1.0" - fast-glob "^2.2.6" - parse5 "5.1.0" - ts-simple-type "~1.0.5" - vscode-css-languageservice "4.3.0" - vscode-html-languageservice "3.1.0" - web-component-analyzer "~1.1.1" - -lit-element@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.2.2.tgz#d148ab6bf4c53a33f707a5168e087725499e5f2b" - integrity sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ== - dependencies: - "@lit/reactive-element" "^1.3.0" - lit-html "^2.2.0" - -lit-html@^2.0.0, lit-html@^2.2.0, lit-html@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.3.1.tgz#56f15104ea75c0a702904893e3409d0e89e2a2b9" - integrity sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA== - dependencies: - "@types/trusted-types" "^2.0.2" - -lit@>=2.2.4, lit@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.3.1.tgz#2cf1c2042da1e44c7a7cc72dff2d72303fd26f48" - integrity sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw== - dependencies: - "@lit/reactive-element" "^1.4.0" - lit-element "^3.2.0" - lit-html "^2.3.0" - -localtunnel@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.2.tgz#528d50087151c4790f89c2db374fe7b0a48501f0" - integrity sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug== - dependencies: - axios "0.21.4" - debug "4.3.2" - openurl "1.1.1" - yargs "17.1.1" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.deburr@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" - integrity sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ== - -lodash.isfinite@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" - integrity sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -luxon@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" - integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -maximatch@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2" - integrity sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A== - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mitt@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" - integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moo@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" - integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -nanocolors@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== - -nanoid@^3.1.25, nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nunjucks@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.3.tgz#1b33615247290e94e28263b5d855ece765648a31" - integrity sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ== - dependencies: - a-sync-waterfall "^1.0.0" - asap "^2.0.3" - commander "^5.1.0" - -object-assign@^4, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -on-finished@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== - -open@^8.0.2: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -openurl@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" - integrity sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA== - -opn@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - 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.3" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@^1.3.2, parseurl@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@1.0.1, path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" - integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -portscanner@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.2.0.tgz#6059189b3efa0965c9d96a56b958eb9508411cf1" - integrity sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw== - dependencies: - async "^2.6.0" - is-number-like "^1.0.3" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-import@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@>=8.4.14, postcss@^8.4.14, postcss@^8.4.16: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@>=2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" - integrity sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w== - dependencies: - condense-newlines "^0.2.1" - extend-shallow "^2.0.1" - js-beautify "^1.6.12" - -prismjs@^1.26.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -promise@^7.0.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -pug-attrs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" - integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== - dependencies: - constantinople "^4.0.1" - js-stringify "^1.0.2" - pug-runtime "^3.0.0" - -pug-code-gen@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce" - integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== - dependencies: - constantinople "^4.0.1" - doctypes "^1.1.0" - js-stringify "^1.0.2" - pug-attrs "^3.0.0" - pug-error "^2.0.0" - pug-runtime "^3.0.0" - void-elements "^3.1.0" - with "^7.0.0" - -pug-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" - integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== - -pug-filters@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" - integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== - dependencies: - constantinople "^4.0.1" - jstransformer "1.0.0" - pug-error "^2.0.0" - pug-walk "^2.0.0" - resolve "^1.15.1" - -pug-lexer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5" - integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== - dependencies: - character-parser "^2.2.0" - is-expression "^4.0.0" - pug-error "^2.0.0" - -pug-linker@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" - integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== - dependencies: - pug-error "^2.0.0" - pug-walk "^2.0.0" - -pug-load@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" - integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== - dependencies: - object-assign "^4.1.1" - pug-walk "^2.0.0" - -pug-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" - integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== - dependencies: - pug-error "^2.0.0" - token-stream "1.0.0" - -pug-runtime@^3.0.0, pug-runtime@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7" - integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== - -pug-strip-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" - integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== - dependencies: - pug-error "^2.0.0" - -pug-walk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" - integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== - -pug@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.2.tgz#f35c7107343454e43bc27ae0ff76c731b78ea535" - integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== - dependencies: - pug-code-gen "^3.0.2" - pug-filters "^4.0.0" - pug-lexer "^5.0.1" - pug-linker "^4.0.0" - pug-load "^3.0.0" - pug-parser "^6.0.0" - pug-runtime "^3.0.1" - pug-strip-comments "^2.0.0" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - integrity sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA== - -qs@^6.5.2: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -range-parser@~1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^2.3.2, raw-body@^2.3.3: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -recursive-copy@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/recursive-copy/-/recursive-copy-2.0.14.tgz#6358af3b5f8da89562f000db44720c4daa94b6d7" - integrity sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog== - dependencies: - errno "^0.1.2" - graceful-fs "^4.1.4" - junk "^1.0.1" - maximatch "^0.1.0" - mkdirp "^0.5.1" - pify "^2.3.0" - promise "^7.0.1" - rimraf "^2.7.1" - slash "^1.0.0" - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requireindex@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-path@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - integrity sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== - dependencies: - http-errors "~1.6.2" - path-is-absolute "1.0.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.1.7, resolve@^1.15.1, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resp-modifier@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" - integrity sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw== - dependencies: - debug "^2.2.0" - minimatch "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@>=3.0.2, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rollup@~2.78.0: - version "2.78.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f" - integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== - optionalDependencies: - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rx@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug== - -rxjs@^5.5.6: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - -safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.4, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serve-index@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - -server-destroy@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" - integrity sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ== - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g== - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slugify@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8" - integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" - integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== - -socket.io-client@^4.4.1: - version "4.5.2" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.2.tgz#9481518c560388c980c88b01e3cf62f367f04c96" - integrity sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.2" - engine.io-client "~6.2.1" - socket.io-parser "~4.2.0" - -socket.io-parser@~4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" - integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - -socket.io@^4.4.1: - version "4.5.2" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.2.tgz#1eb25fd380ab3d63470aa8279f8e48d922d443ac" - integrity sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ== - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - debug "~4.3.2" - engine.io "~6.2.0" - socket.io-adapter "~2.4.0" - socket.io-parser "~4.2.0" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg== - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - -stream-throttle@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" - integrity sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ== - dependencies: - commander "^2.2.0" - limiter "^1.0.5" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== - -tailwindcss@>=3.0.18: - version "3.1.8" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" - integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== - dependencies: - arg "^5.0.2" - chokidar "^3.5.3" - color-name "^1.1.4" - detective "^5.2.1" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.11" - glob-parent "^6.0.2" - is-glob "^4.0.3" - lilconfig "^2.0.6" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.14" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.10" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tfunk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" - integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== - dependencies: - chalk "^1.1.3" - dlv "^1.1.3" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -token-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" - integrity sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg== - -ts-simple-type@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/ts-simple-type/-/ts-simple-type-1.0.7.tgz#03930af557528dd40eaa121913c7035a0baaacf8" - integrity sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@^1.6.16: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typescript@>=4.6.4, typescript@^4.6.2: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== - -typescript@^3.8.3: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -typescript@~4.3.2: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -ua-parser-js@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775" - integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -uglify-js@^3.1.4: - version "3.17.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" - integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== - -uhyphen@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/uhyphen/-/uhyphen-0.1.0.tgz#3cc22afa790daa802b9f6789f3583108d5b4a08c" - integrity sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -vary@^1, vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vite@>=3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.3.tgz#b2a0821c11aae124bb7618f8036913c689afcc59" - integrity sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA== - dependencies: - esbuild "^0.15.6" - postcss "^8.4.16" - resolve "^1.22.1" - rollup "~2.78.0" - optionalDependencies: - fsevents "~2.3.2" - -void-elements@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" - integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== - -vscode-css-languageservice@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz#40c797d664ab6188cace33cfbb19b037580a9318" - integrity sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A== - dependencies: - vscode-languageserver-textdocument "^1.0.1" - vscode-languageserver-types "3.16.0-next.2" - vscode-nls "^4.1.2" - vscode-uri "^2.1.2" - -vscode-html-languageservice@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz#265b53bda595e6947b16b0fb8c604e1e58685393" - integrity sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg== - dependencies: - vscode-languageserver-textdocument "^1.0.1" - vscode-languageserver-types "3.16.0-next.2" - vscode-nls "^4.1.2" - vscode-uri "^2.1.2" - -vscode-languageserver-textdocument@^1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" - integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== - -vscode-languageserver-types@3.16.0-next.2: - version "3.16.0-next.2" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083" - integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q== - -vscode-nls@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167" - integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw== - -vscode-uri@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" - integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== - -web-component-analyzer@~1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/web-component-analyzer/-/web-component-analyzer-1.1.6.tgz#d9bd904d904a711c19ba6046a45b60a7ee3ed2e9" - integrity sha512-1PyBkb/jijDEVE+Pnk3DTmVHD8takipdvAwvZv1V8jIidsSIJ5nhN87Gs+4dpEb1vw48yp8dnbZKkvMYJ+C0VQ== - dependencies: - fast-glob "^3.2.2" - ts-simple-type "~1.0.5" - typescript "^3.8.3" - yargs "^15.3.1" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -with@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" - integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== - dependencies: - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" - assert-never "^1.2.1" - babel-walk "3.0.0-canary-5" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@^7.4.2: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@~8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - -xmlhttprequest-ssl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" - integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@17.1.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba" - integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^17.3.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -ylru@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785" - integrity sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 3f5194c0ecefc39504c5275a1f0f6f2d6a66205b Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 25 Sep 2022 00:54:14 -0500 Subject: [PATCH 041/397] wip on vue3+vite integration --- .vscode/settings.json | 4 +- package.json | 78 +- pnpm-lock.yaml | 4810 +++++++++++++++++ postcss.config.js | 9 + prettier.config.js | 4 + pyproject.toml | 2 +- src/app/utils/__init__.py | 3 - src/app/utils/db/__init__.py | 3 - src/app/utils/text/__init__.py | 3 - src/{ => server}/app/__init__.py | 0 src/{ => server}/app/__main__.py | 0 src/{ => server}/app/asgi.py | 0 src/{ => server}/app/cli/__init__.py | 0 src/{ => server}/app/cli/app.py | 0 src/{ => server}/app/cli/commands/__init__.py | 0 src/{ => server}/app/cli/commands/manage.py | 11 +- src/{ => server}/app/cli/commands/run.py | 0 src/{ => server}/app/cli/console.py | 0 src/{ => server}/app/config/__init__.py | 0 src/{ => server}/app/config/alembic.ini | 0 src/{ => server}/app/config/application.py | 7 +- src/{ => server}/app/config/logging.py | 6 +- src/{ => server}/app/config/paths.py | 0 src/{ => server}/app/core/__init__.py | 0 src/{ => server}/app/core/cache.py | 0 src/{ => server}/app/core/client/__init__.py | 0 src/{ => server}/app/core/client/client.py | 0 src/{ => server}/app/core/client/endpoint.py | 0 src/{ => server}/app/core/compression.py | 0 src/{ => server}/app/core/cors.py | 0 src/{ => server}/app/core/csrf.py | 0 src/{ => server}/app/core/exceptions.py | 0 src/{ => server}/app/core/guards.py | 0 .../app/core/middleware/__init__.py | 0 src/{ => server}/app/core/middleware/db.py | 0 src/{ => server}/app/core/openapi.py | 0 src/{ => server}/app/core/response.py | 0 src/{ => server}/app/core/security.py | 0 src/{ => server}/app/core/static_files.py | 0 src/{ => server}/app/db/__init__.py | 0 src/{app/utils => server/app}/db/db_ready.py | 0 src/{ => server}/app/db/db_types.py | 0 src/{ => server}/app/db/engine.py | 0 src/{ => server}/app/db/migrations/README | 0 src/{ => server}/app/db/migrations/env.py | 0 .../app/db/migrations/script.py.mako | 0 .../app/db/migrations/versions/.gitkeep | 0 .../versions/2022-09-24_2aca7639e493.py | 0 src/{ => server}/app/db/models/__init__.py | 0 src/{ => server}/app/db/models/base.py | 0 src/{ => server}/app/db/models/team.py | 0 src/{ => server}/app/db/models/upload.py | 0 src/{ => server}/app/db/models/user.py | 0 .../app/db/repositories/__init__.py | 0 src/{ => server}/app/db/repositories/base.py | 5 +- src/{ => server}/app/db/repositories/team.py | 0 .../app/db/repositories/team_invite.py | 0 .../app/db/repositories/upload.py | 0 src/{ => server}/app/db/repositories/user.py | 0 src/{ => server}/app/py.typed | 0 src/{ => server}/app/schemas/__init__.py | 0 src/{ => server}/app/schemas/base.py | 0 src/{ => server}/app/schemas/health.py | 0 src/{ => server}/app/schemas/message.py | 0 src/{ => server}/app/schemas/team.py | 0 src/{ => server}/app/schemas/team_invite.py | 0 src/{ => server}/app/schemas/upload.py | 0 src/{ => server}/app/schemas/user.py | 0 src/{ => server}/app/services/__init__.py | 0 src/{ => server}/app/services/base.py | 0 src/{ => server}/app/services/health.py | 0 src/{ => server}/app/services/team.py | 0 src/{ => server}/app/services/team_invite.py | 0 src/{ => server}/app/services/user.py | 0 src/server/app/utils/__init__.py | 3 + src/{ => server}/app/utils/asyncer.py | 0 src/{ => server}/app/utils/module_loading.py | 0 src/{ => server}/app/utils/serializers.py | 0 .../app/utils/slugify_text.py} | 0 src/{ => server}/app/version.py | 0 src/{ => server}/app/web/__init__.py | 3 +- src/{ => server}/app/web/public/.gitkeep | 0 src/server/app/web/public/css/extra.css | 286 + .../web/public/images/1x/starlite-banner.png | Bin 0 -> 34345 bytes .../web/public/images/1x/starlite-favicon.png | Bin 0 -> 1362 bytes .../web/public/images/1x/starlite-icon.png | Bin 0 -> 21005 bytes .../public/images/1x/starlite-logo-round.png | Bin 0 -> 25838 bytes .../web/public/images/1x/starlite-logo.png | Bin 0 -> 23372 bytes .../public/images/2x/starlite-banner@2x.png | Bin 0 -> 77118 bytes .../public/images/2x/starlite-favicon@2x.png | Bin 0 -> 2403 bytes .../web/public/images/2x/starlite-icon@2x.png | Bin 0 -> 49733 bytes .../images/2x/starlite-logo-round@2x.png | Bin 0 -> 58585 bytes .../web/public/images/2x/starlite-logo@2x.png | Bin 0 -> 54348 bytes .../public/images/4x/starlite-banner@4x.png | Bin 0 -> 193018 bytes .../public/images/4x/starlite-favicon@4x.png | Bin 0 -> 4667 bytes .../web/public/images/4x/starlite-icon@4x.png | Bin 0 -> 129413 bytes .../images/4x/starlite-logo-round@4x.png | Bin 0 -> 145681 bytes .../web/public/images/4x/starlite-logo@4x.png | Bin 0 -> 137868 bytes .../web/public/images/SVG/starlite-banner.svg | 1 + .../public/images/SVG/starlite-favicon.svg | 1 + .../web/public/images/SVG/starlite-icon.svg | 1 + .../public/images/SVG/starlite-logo-round.svg | 1 + .../web/public/images/SVG/starlite-logo.svg | 1 + .../app/web/public/images/Stalite Logo.ai | 1178 ++++ .../web/public/images/starlite-favicon.ico | Bin 0 -> 9662 bytes src/{ => server}/app/web/public/index.html | 0 src/{ => server}/app/web/routes/__init__.py | 3 +- src/{ => server}/app/web/routes/access.py | 0 src/{ => server}/app/web/routes/collection.py | 0 src/{ => server}/app/web/routes/frontend.py | 0 src/{ => server}/app/web/routes/health.py | 0 src/{ => server}/app/web/routes/user.py | 0 tests/__init__.py => src/ui/public/.gitkeep | 0 src/ui/public/css/extra.css | 286 + src/ui/public/docs/redoc.standalone.js | 3 + src/ui/public/docs/swagger-ui-bundle.js | 3 + src/ui/public/docs/swagger-ui-bundle.js.map | 1 + src/ui/public/docs/swagger-ui.css | 4 + src/ui/public/docs/swagger-ui.css.map | 1 + src/ui/public/images/1x/starlite-banner.png | Bin 0 -> 34345 bytes src/ui/public/images/1x/starlite-favicon.png | Bin 0 -> 1362 bytes src/ui/public/images/1x/starlite-icon.png | Bin 0 -> 21005 bytes .../public/images/1x/starlite-logo-round.png | Bin 0 -> 25838 bytes src/ui/public/images/1x/starlite-logo.png | Bin 0 -> 23372 bytes .../public/images/2x/starlite-banner@2x.png | Bin 0 -> 77118 bytes .../public/images/2x/starlite-favicon@2x.png | Bin 0 -> 2403 bytes src/ui/public/images/2x/starlite-icon@2x.png | Bin 0 -> 49733 bytes .../images/2x/starlite-logo-round@2x.png | Bin 0 -> 58585 bytes src/ui/public/images/2x/starlite-logo@2x.png | Bin 0 -> 54348 bytes .../public/images/4x/starlite-banner@4x.png | Bin 0 -> 193018 bytes .../public/images/4x/starlite-favicon@4x.png | Bin 0 -> 4667 bytes src/ui/public/images/4x/starlite-icon@4x.png | Bin 0 -> 129413 bytes .../images/4x/starlite-logo-round@4x.png | Bin 0 -> 145681 bytes src/ui/public/images/4x/starlite-logo@4x.png | Bin 0 -> 137868 bytes src/ui/public/images/SVG/starlite-banner.svg | 1 + src/ui/public/images/SVG/starlite-favicon.svg | 1 + src/ui/public/images/SVG/starlite-icon.svg | 1 + .../public/images/SVG/starlite-logo-round.svg | 1 + src/ui/public/images/SVG/starlite-logo.svg | 1 + src/ui/public/images/Stalite Logo.ai | 1178 ++++ src/ui/public/images/starlite-favicon.ico | Bin 0 -> 9662 bytes src/ui/src/App.vue | 18 + src/ui/src/api/client/.gitkeep | 0 src/ui/src/api/config.ts | 4 + src/ui/src/api/index.ts | 17 + src/ui/src/api/types.ts | 81 + src/ui/src/assets/_app.css | 24 + src/ui/src/assets/_progress.css | 19 + ...r-atmosphere-bright-cloudiness-139446.jpeg | Bin 0 -> 244140 bytes .../src/assets/images/gluent-logo-circle.png | Bin 0 -> 45045 bytes .../assets/images/gluent-logo-white-text.png | Bin 0 -> 127292 bytes .../images/nature-sky-night-milky-way.jpeg | Bin 0 -> 788334 bytes src/ui/src/assets/main.css | 5 + src/ui/src/assets/tailwind/_base.css | 1 + src/ui/src/assets/tailwind/_components.css | 1 + src/ui/src/assets/tailwind/_utilities.css | 1 + src/ui/src/components/ActionPanel.vue | 71 + src/ui/src/components/ApplicationLogo.vue | 173 + src/ui/src/components/ConfirmationModal.vue | 59 + src/ui/src/components/ConfirmsPassword.vue | 124 + src/ui/src/components/DangerButton.vue | 26 + src/ui/src/components/DialogModal.vue | 42 + src/ui/src/components/FlashMessage.vue | 31 + src/ui/src/components/FormPanel.vue | 48 + src/ui/src/components/FormSectionTitle.vue | 17 + src/ui/src/components/Modal.vue | 92 + src/ui/src/components/PageFooter.vue | 4 + src/ui/src/components/PageHeader.vue | 19 + src/ui/src/components/PanelTitle.vue | 19 + src/ui/src/components/PrimaryButton.vue | 26 + .../src/components/RouterViewTransition.vue | 43 + src/ui/src/components/SecondaryButton.vue | 26 + src/ui/src/components/SectionBorder.vue | 7 + src/ui/src/components/SectionTitle.vue | 17 + src/ui/src/components/TextInput.vue | 68 + src/ui/src/composables/dark.ts | 6 + src/ui/src/composables/useAuth.ts | 11 + src/ui/src/composables/useBreakpoints.ts | 10 + src/ui/src/composables/useForm.ts | 147 + src/ui/src/env.d.ts | 12 + src/ui/src/index.html | 22 + src/ui/src/layouts/CenteredLayout.vue | 5 + src/ui/src/main.ts | 38 + src/ui/src/pages/404.vue | 41 + src/ui/src/pages/access/Login.vue | 91 + src/ui/src/pages/access/Register.vue | 81 + .../src/pages/access/RequestPasswordReset.vue | 52 + src/ui/src/pages/access/ResetPassword.vue | 64 + src/ui/src/pages/access/Verify.vue | 15 + src/ui/src/pages/home/Index.vue | 8 + src/ui/src/pages/profile/Index.vue | 21 + .../profile/_partials/EditPasswordForm.vue | 64 + .../profile/_partials/EditProfileForm.vue | 55 + src/ui/src/plugins/auth/devtools.ts | 29 + src/ui/src/plugins/auth/index.ts | 2 + src/ui/src/plugins/auth/interceptors.ts | 47 + src/ui/src/plugins/auth/navigationGuards.ts | 27 + src/ui/src/plugins/auth/plugin.ts | 236 + src/ui/src/plugins/auth/types.ts | 59 + src/ui/src/plugins/betterFileSize.ts | 8 + src/ui/src/plugins/darkMode.ts | 4 + src/ui/src/plugins/globalComponents.ts | 12 + src/ui/src/plugins/storage.ts | 29 + src/ui/src/router.ts | 300 + src/ui/src/stores/app.ts | 80 + tailwind.config.js | 8 + tests/server/__init__.py | 0 .../{ => server}/utils/test_module_loading.py | 0 tsconfig.json | 40 + vite.config.js | 93 + 210 files changed, 10657 insertions(+), 47 deletions(-) create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 prettier.config.js delete mode 100644 src/app/utils/__init__.py delete mode 100644 src/app/utils/db/__init__.py delete mode 100644 src/app/utils/text/__init__.py rename src/{ => server}/app/__init__.py (100%) rename src/{ => server}/app/__main__.py (100%) rename src/{ => server}/app/asgi.py (100%) rename src/{ => server}/app/cli/__init__.py (100%) rename src/{ => server}/app/cli/app.py (100%) rename src/{ => server}/app/cli/commands/__init__.py (100%) rename src/{ => server}/app/cli/commands/manage.py (99%) rename src/{ => server}/app/cli/commands/run.py (100%) rename src/{ => server}/app/cli/console.py (100%) rename src/{ => server}/app/config/__init__.py (100%) rename src/{ => server}/app/config/alembic.ini (100%) rename src/{ => server}/app/config/application.py (99%) rename src/{ => server}/app/config/logging.py (99%) rename src/{ => server}/app/config/paths.py (100%) rename src/{ => server}/app/core/__init__.py (100%) rename src/{ => server}/app/core/cache.py (100%) rename src/{ => server}/app/core/client/__init__.py (100%) rename src/{ => server}/app/core/client/client.py (100%) rename src/{ => server}/app/core/client/endpoint.py (100%) rename src/{ => server}/app/core/compression.py (100%) rename src/{ => server}/app/core/cors.py (100%) rename src/{ => server}/app/core/csrf.py (100%) rename src/{ => server}/app/core/exceptions.py (100%) rename src/{ => server}/app/core/guards.py (100%) rename src/{ => server}/app/core/middleware/__init__.py (100%) rename src/{ => server}/app/core/middleware/db.py (100%) rename src/{ => server}/app/core/openapi.py (100%) rename src/{ => server}/app/core/response.py (100%) rename src/{ => server}/app/core/security.py (100%) rename src/{ => server}/app/core/static_files.py (100%) rename src/{ => server}/app/db/__init__.py (100%) rename src/{app/utils => server/app}/db/db_ready.py (100%) rename src/{ => server}/app/db/db_types.py (100%) rename src/{ => server}/app/db/engine.py (100%) rename src/{ => server}/app/db/migrations/README (100%) rename src/{ => server}/app/db/migrations/env.py (100%) rename src/{ => server}/app/db/migrations/script.py.mako (100%) rename src/{ => server}/app/db/migrations/versions/.gitkeep (100%) rename src/{ => server}/app/db/migrations/versions/2022-09-24_2aca7639e493.py (100%) rename src/{ => server}/app/db/models/__init__.py (100%) rename src/{ => server}/app/db/models/base.py (100%) rename src/{ => server}/app/db/models/team.py (100%) rename src/{ => server}/app/db/models/upload.py (100%) rename src/{ => server}/app/db/models/user.py (100%) rename src/{ => server}/app/db/repositories/__init__.py (100%) rename src/{ => server}/app/db/repositories/base.py (99%) rename src/{ => server}/app/db/repositories/team.py (100%) rename src/{ => server}/app/db/repositories/team_invite.py (100%) rename src/{ => server}/app/db/repositories/upload.py (100%) rename src/{ => server}/app/db/repositories/user.py (100%) rename src/{ => server}/app/py.typed (100%) rename src/{ => server}/app/schemas/__init__.py (100%) rename src/{ => server}/app/schemas/base.py (100%) rename src/{ => server}/app/schemas/health.py (100%) rename src/{ => server}/app/schemas/message.py (100%) rename src/{ => server}/app/schemas/team.py (100%) rename src/{ => server}/app/schemas/team_invite.py (100%) rename src/{ => server}/app/schemas/upload.py (100%) rename src/{ => server}/app/schemas/user.py (100%) rename src/{ => server}/app/services/__init__.py (100%) rename src/{ => server}/app/services/base.py (100%) rename src/{ => server}/app/services/health.py (100%) rename src/{ => server}/app/services/team.py (100%) rename src/{ => server}/app/services/team_invite.py (100%) rename src/{ => server}/app/services/user.py (100%) create mode 100644 src/server/app/utils/__init__.py rename src/{ => server}/app/utils/asyncer.py (100%) rename src/{ => server}/app/utils/module_loading.py (100%) rename src/{ => server}/app/utils/serializers.py (100%) rename src/{app/utils/text/slugify.py => server/app/utils/slugify_text.py} (100%) rename src/{ => server}/app/version.py (100%) rename src/{ => server}/app/web/__init__.py (99%) rename src/{ => server}/app/web/public/.gitkeep (100%) create mode 100644 src/server/app/web/public/css/extra.css create mode 100644 src/server/app/web/public/images/1x/starlite-banner.png create mode 100644 src/server/app/web/public/images/1x/starlite-favicon.png create mode 100644 src/server/app/web/public/images/1x/starlite-icon.png create mode 100644 src/server/app/web/public/images/1x/starlite-logo-round.png create mode 100644 src/server/app/web/public/images/1x/starlite-logo.png create mode 100644 src/server/app/web/public/images/2x/starlite-banner@2x.png create mode 100644 src/server/app/web/public/images/2x/starlite-favicon@2x.png create mode 100644 src/server/app/web/public/images/2x/starlite-icon@2x.png create mode 100644 src/server/app/web/public/images/2x/starlite-logo-round@2x.png create mode 100644 src/server/app/web/public/images/2x/starlite-logo@2x.png create mode 100644 src/server/app/web/public/images/4x/starlite-banner@4x.png create mode 100644 src/server/app/web/public/images/4x/starlite-favicon@4x.png create mode 100644 src/server/app/web/public/images/4x/starlite-icon@4x.png create mode 100644 src/server/app/web/public/images/4x/starlite-logo-round@4x.png create mode 100644 src/server/app/web/public/images/4x/starlite-logo@4x.png create mode 100644 src/server/app/web/public/images/SVG/starlite-banner.svg create mode 100644 src/server/app/web/public/images/SVG/starlite-favicon.svg create mode 100644 src/server/app/web/public/images/SVG/starlite-icon.svg create mode 100644 src/server/app/web/public/images/SVG/starlite-logo-round.svg create mode 100644 src/server/app/web/public/images/SVG/starlite-logo.svg create mode 100644 src/server/app/web/public/images/Stalite Logo.ai create mode 100644 src/server/app/web/public/images/starlite-favicon.ico rename src/{ => server}/app/web/public/index.html (100%) rename src/{ => server}/app/web/routes/__init__.py (99%) rename src/{ => server}/app/web/routes/access.py (100%) rename src/{ => server}/app/web/routes/collection.py (100%) rename src/{ => server}/app/web/routes/frontend.py (100%) rename src/{ => server}/app/web/routes/health.py (100%) rename src/{ => server}/app/web/routes/user.py (100%) rename tests/__init__.py => src/ui/public/.gitkeep (100%) create mode 100644 src/ui/public/css/extra.css create mode 100644 src/ui/public/docs/redoc.standalone.js create mode 100644 src/ui/public/docs/swagger-ui-bundle.js create mode 100644 src/ui/public/docs/swagger-ui-bundle.js.map create mode 100644 src/ui/public/docs/swagger-ui.css create mode 100644 src/ui/public/docs/swagger-ui.css.map create mode 100644 src/ui/public/images/1x/starlite-banner.png create mode 100644 src/ui/public/images/1x/starlite-favicon.png create mode 100644 src/ui/public/images/1x/starlite-icon.png create mode 100644 src/ui/public/images/1x/starlite-logo-round.png create mode 100644 src/ui/public/images/1x/starlite-logo.png create mode 100644 src/ui/public/images/2x/starlite-banner@2x.png create mode 100644 src/ui/public/images/2x/starlite-favicon@2x.png create mode 100644 src/ui/public/images/2x/starlite-icon@2x.png create mode 100644 src/ui/public/images/2x/starlite-logo-round@2x.png create mode 100644 src/ui/public/images/2x/starlite-logo@2x.png create mode 100644 src/ui/public/images/4x/starlite-banner@4x.png create mode 100644 src/ui/public/images/4x/starlite-favicon@4x.png create mode 100644 src/ui/public/images/4x/starlite-icon@4x.png create mode 100644 src/ui/public/images/4x/starlite-logo-round@4x.png create mode 100644 src/ui/public/images/4x/starlite-logo@4x.png create mode 100644 src/ui/public/images/SVG/starlite-banner.svg create mode 100644 src/ui/public/images/SVG/starlite-favicon.svg create mode 100644 src/ui/public/images/SVG/starlite-icon.svg create mode 100644 src/ui/public/images/SVG/starlite-logo-round.svg create mode 100644 src/ui/public/images/SVG/starlite-logo.svg create mode 100644 src/ui/public/images/Stalite Logo.ai create mode 100644 src/ui/public/images/starlite-favicon.ico create mode 100644 src/ui/src/App.vue create mode 100644 src/ui/src/api/client/.gitkeep create mode 100644 src/ui/src/api/config.ts create mode 100644 src/ui/src/api/index.ts create mode 100644 src/ui/src/api/types.ts create mode 100644 src/ui/src/assets/_app.css create mode 100644 src/ui/src/assets/_progress.css create mode 100644 src/ui/src/assets/images/air-atmosphere-bright-cloudiness-139446.jpeg create mode 100644 src/ui/src/assets/images/gluent-logo-circle.png create mode 100644 src/ui/src/assets/images/gluent-logo-white-text.png create mode 100644 src/ui/src/assets/images/nature-sky-night-milky-way.jpeg create mode 100644 src/ui/src/assets/main.css create mode 100644 src/ui/src/assets/tailwind/_base.css create mode 100644 src/ui/src/assets/tailwind/_components.css create mode 100644 src/ui/src/assets/tailwind/_utilities.css create mode 100644 src/ui/src/components/ActionPanel.vue create mode 100644 src/ui/src/components/ApplicationLogo.vue create mode 100644 src/ui/src/components/ConfirmationModal.vue create mode 100644 src/ui/src/components/ConfirmsPassword.vue create mode 100644 src/ui/src/components/DangerButton.vue create mode 100644 src/ui/src/components/DialogModal.vue create mode 100644 src/ui/src/components/FlashMessage.vue create mode 100644 src/ui/src/components/FormPanel.vue create mode 100644 src/ui/src/components/FormSectionTitle.vue create mode 100644 src/ui/src/components/Modal.vue create mode 100644 src/ui/src/components/PageFooter.vue create mode 100644 src/ui/src/components/PageHeader.vue create mode 100644 src/ui/src/components/PanelTitle.vue create mode 100644 src/ui/src/components/PrimaryButton.vue create mode 100644 src/ui/src/components/RouterViewTransition.vue create mode 100644 src/ui/src/components/SecondaryButton.vue create mode 100644 src/ui/src/components/SectionBorder.vue create mode 100644 src/ui/src/components/SectionTitle.vue create mode 100644 src/ui/src/components/TextInput.vue create mode 100644 src/ui/src/composables/dark.ts create mode 100644 src/ui/src/composables/useAuth.ts create mode 100644 src/ui/src/composables/useBreakpoints.ts create mode 100644 src/ui/src/composables/useForm.ts create mode 100644 src/ui/src/env.d.ts create mode 100644 src/ui/src/index.html create mode 100644 src/ui/src/layouts/CenteredLayout.vue create mode 100644 src/ui/src/main.ts create mode 100644 src/ui/src/pages/404.vue create mode 100644 src/ui/src/pages/access/Login.vue create mode 100644 src/ui/src/pages/access/Register.vue create mode 100644 src/ui/src/pages/access/RequestPasswordReset.vue create mode 100644 src/ui/src/pages/access/ResetPassword.vue create mode 100644 src/ui/src/pages/access/Verify.vue create mode 100644 src/ui/src/pages/home/Index.vue create mode 100644 src/ui/src/pages/profile/Index.vue create mode 100644 src/ui/src/pages/profile/_partials/EditPasswordForm.vue create mode 100644 src/ui/src/pages/profile/_partials/EditProfileForm.vue create mode 100644 src/ui/src/plugins/auth/devtools.ts create mode 100644 src/ui/src/plugins/auth/index.ts create mode 100644 src/ui/src/plugins/auth/interceptors.ts create mode 100644 src/ui/src/plugins/auth/navigationGuards.ts create mode 100644 src/ui/src/plugins/auth/plugin.ts create mode 100644 src/ui/src/plugins/auth/types.ts create mode 100644 src/ui/src/plugins/betterFileSize.ts create mode 100644 src/ui/src/plugins/darkMode.ts create mode 100644 src/ui/src/plugins/globalComponents.ts create mode 100644 src/ui/src/plugins/storage.ts create mode 100644 src/ui/src/router.ts create mode 100644 src/ui/src/stores/app.ts create mode 100644 tailwind.config.js create mode 100644 tests/server/__init__.py rename tests/{ => server}/utils/test_module_loading.py (100%) create mode 100644 tsconfig.json create mode 100644 vite.config.js diff --git a/.vscode/settings.json b/.vscode/settings.json index e6c41253..ed2c28df 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -32,12 +32,12 @@ "python.linting.pylintArgs": ["--extension-pkg-whitelist='pydantic'"], "python.linting.flake8Args": ["--max-line-length=120"], "python.sortImports.args": ["--profile", "black"], - "python.testing.pytestArgs": ["tests"], + "python.testing.pytestArgs": ["tests/server"], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, "python.linting.flake8Enabled": true, "python.linting.mypyEnabled": true, "python.linting.enabled": true, - "mypy.targets": ["src", "tests"], + "mypy.targets": ["src/server", "tests/server"], "mypy.runUsingActiveInterpreter": true } diff --git a/package.json b/package.json index b1aceac1..60643e58 100644 --- a/package.json +++ b/package.json @@ -3,18 +3,46 @@ "private": true, "version": "0.0.0", "scripts": { - "dev": "vite dev", - "start": "vite --host", - "build": "vite build", - "lint": "eslint src --fix" + "dev": "npm run dev:ui", + "dev:ui": "mkdir -p src/ui/dist && vite", + "dev:api": "poetry run gluent-console run all --http-workers=1 --background-workers=1", + "dev:all": "npm run dev-all", + "dev-all": "concurrently --handle-input --default-input-target='api' --kill-others --raw --names='ui,api' \"npm run dev:ui\" \"npm run dev:api\" ", + "build": "mkdir -p src/ui/dist && cross-env NODE_ENV=production npm run gen-api && vue-tsc --noEmit && vite build", + "serve": "vite preview", + "type-check": "vue-tsc --noEmit", + "eslint": "npx eslint --ignore-path .prettierignore --ext .ts,.js,.vue .", + "eslint-fix": "npx eslint --ignore-path .prettierignore --ext .ts,.js,.vue --fix .", + "prettier": "npx prettier --write .", + "prettier-check": "npx prettier --check .", + "license": "npx license-report --only=prod --output=html --config license-report-config.json", + "vue-i18n-extract": "npx vue-i18n-extract", + "vue-i18n-extract-remove": "npx vue-i18n-extract --remove", + "test": "echo \"Error: no test specified\" && exit 1", + "gen-api": "poetry run python3 scripts/export-openapi-schema && rm -rf src/ui/src/api/client && npx @openapitools/openapi-generator-cli generate -i ./src/ui/spec/openapi.json -g typescript-axios -o src/ui/src/api/client --additional-properties withSeparateModelsAndApi=true,supportsES6=true,useSingleRequestParameter=true,apiPackage=api,modelPackage=models", + "cy-run-ct-chrome": "cypress run-ct --browser chrome", + "cy-run-ct-firefox": "cypress run-ct --browser firefox", + "cy-run-it-chrome": "cypress run --browser chrome", + "cy-run-it-firefox": "cypress run --browser firefox", + "cy-open": "cypress open" + }, + "repository": { + "type": "git", + "url": "https://github.com/cofin/starlite-spa.git" }, "dependencies": { - "lit": "^2.3.1" + "jwt-decode": "^3.1.2", + "pinia": "^2.0.22", + "uuid": "^9.0.0", + "vue": "^3.2.39", + "vue-router": "^4.1.5", + "zod": "^3.19.1" }, "devDependencies": { - "@custom-elements-manifest/analyzer": "^0.6.4", "@cypress/vite-dev-server": "^3.1.1", - "@open-wc/testing": "^3.1.6", + "@cypress/vue": "^4.2.0", + "@headlessui/vue": "^1.7.2", + "@heroicons/vue": "^2.0.11", "@openapitools/openapi-generator-cli": "^2.5.2", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.3", @@ -24,7 +52,14 @@ "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", - "autoprefixer": "^10.4.12", + "@vitejs/plugin-vue": "^3.1.0", + "@vue/compiler-sfc": "^3.2.39", + "@vue/eslint-config-typescript": "^11.0.2", + "@vueuse/components": "^9.2.0", + "@vueuse/core": "^9.2.0", + "@vueuse/head": "^0.7.12", + "@vueuse/integrations": "^9.2.0", + "autoprefixer": "10.4.12", "concurrently": "^7.4.0", "cross-env": "^7.0.3", "cssnano": "^5.1.13", @@ -32,18 +67,33 @@ "dotenv": "^16.0.2", "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", - "eslint-plugin-lit": "^1.6.1", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-wc": "^1.3.2", + "eslint-plugin-vue": "^9.5.1", "postcss": "^8.4.16", "postcss-import": "^15.0.0", + "postcss-nesting": "^10.2.0", "prettier": "^2.7.1", - "rimraf": "^3.0.2", + "prettier-plugin-tailwindcss": "^0.1.13", + "stylelint": "^14.12.1", + "stylelint-config-recommended": "^9.0.0", + "stylelint-config-standard": "^28.0.0", + "tailwind-scrollbar": "^2.0.1", "tailwindcss": "^3.1.8", - "ts-lit-plugin": "^1.2.1", "typescript": "^4.8.3", "vite": "^3.1.3", - "vite-plugin-eslint": "^1.8.1" + "vite-plugin-eslint": "^1.8.1", + "vue-eslint-parser": "^9.1.0", + "vue-tsc": "^0.40.13" }, - "customElements": "custom-elements.json" + "browserslist": [ + "> 1%", + "last 2 versions" + ], + "prettier": { + "printWidth": 120, + "semi": false, + "singleQuote": false, + "vueIndentScriptAndStyle": false, + "htmlWhitespaceSensitivity": "ignore" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..a89b58de --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4810 @@ +lockfileVersion: 5.4 + +specifiers: + '@cypress/vite-dev-server': ^3.1.1 + '@cypress/vue': ^4.2.0 + '@headlessui/vue': ^1.7.2 + '@heroicons/vue': ^2.0.11 + '@openapitools/openapi-generator-cli': ^2.5.2 + '@tailwindcss/aspect-ratio': ^0.4.2 + '@tailwindcss/forms': ^0.5.3 + '@tailwindcss/line-clamp': ^0.4.2 + '@tailwindcss/typography': ^0.5.7 + '@types/node': ^18.7.20 + '@types/uuid': ^8.3.4 + '@typescript-eslint/eslint-plugin': ^5.38.0 + '@typescript-eslint/parser': ^5.38.0 + '@vitejs/plugin-vue': ^3.1.0 + '@vue/compiler-sfc': ^3.2.39 + '@vue/eslint-config-typescript': ^11.0.2 + '@vueuse/components': ^9.2.0 + '@vueuse/core': ^9.2.0 + '@vueuse/head': ^0.7.12 + '@vueuse/integrations': ^9.2.0 + autoprefixer: 10.4.12 + concurrently: ^7.4.0 + cross-env: ^7.0.3 + cssnano: ^5.1.13 + cypress: ^10.8.0 + dotenv: ^16.0.2 + eslint: ^8.24.0 + eslint-config-prettier: ^8.5.0 + eslint-plugin-prettier: ^4.2.1 + eslint-plugin-vue: ^9.5.1 + jwt-decode: ^3.1.2 + pinia: ^2.0.22 + postcss: ^8.4.16 + postcss-import: ^15.0.0 + postcss-nesting: ^10.2.0 + prettier: ^2.7.1 + prettier-plugin-tailwindcss: ^0.1.13 + stylelint: ^14.12.1 + stylelint-config-recommended: ^9.0.0 + stylelint-config-standard: ^28.0.0 + tailwind-scrollbar: ^2.0.1 + tailwindcss: ^3.1.8 + typescript: ^4.8.3 + uuid: ^9.0.0 + vite: ^3.1.3 + vite-plugin-eslint: ^1.8.1 + vue: ^3.2.39 + vue-eslint-parser: ^9.1.0 + vue-router: ^4.1.5 + vue-tsc: ^0.40.13 + zod: ^3.19.1 + +dependencies: + jwt-decode: 3.1.2 + pinia: 2.0.22_arz4dztosvwy2ghjrlh2wdhejm + uuid: 9.0.0 + vue: 3.2.39 + vue-router: 4.1.5_vue@3.2.39 + zod: 3.19.1 + +devDependencies: + '@cypress/vite-dev-server': 3.1.1 + '@cypress/vue': 4.2.0_cypress@10.8.0+vue@3.2.39 + '@headlessui/vue': 1.7.2_vue@3.2.39 + '@heroicons/vue': 2.0.11_vue@3.2.39 + '@openapitools/openapi-generator-cli': 2.5.2 + '@tailwindcss/aspect-ratio': 0.4.2_tailwindcss@3.1.8 + '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 + '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.1.8 + '@tailwindcss/typography': 0.5.7_tailwindcss@3.1.8 + '@types/node': 18.7.20 + '@types/uuid': 8.3.4 + '@typescript-eslint/eslint-plugin': 5.38.0_4gkcvl6qsi23tqqawfqgcwtp54 + '@typescript-eslint/parser': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + '@vitejs/plugin-vue': 3.1.0_vite@3.1.3+vue@3.2.39 + '@vue/compiler-sfc': 3.2.39 + '@vue/eslint-config-typescript': 11.0.2_nyrdu7uvzr4ojzug6r7f7cpcdq + '@vueuse/components': 9.2.0_vue@3.2.39 + '@vueuse/core': 9.2.0_vue@3.2.39 + '@vueuse/head': 0.7.12_vue@3.2.39 + '@vueuse/integrations': 9.2.0_4wpa57pufl54tjn6riotx62t64 + autoprefixer: 10.4.12_postcss@8.4.16 + concurrently: 7.4.0 + cross-env: 7.0.3 + cssnano: 5.1.13_postcss@8.4.16 + cypress: 10.8.0 + dotenv: 16.0.2 + eslint: 8.24.0 + eslint-config-prettier: 8.5.0_eslint@8.24.0 + eslint-plugin-prettier: 4.2.1_cfn5x6ujhhgzv3423d6k7r2zzm + eslint-plugin-vue: 9.5.1_eslint@8.24.0 + postcss: 8.4.16 + postcss-import: 15.0.0_postcss@8.4.16 + postcss-nesting: 10.2.0_postcss@8.4.16 + prettier: 2.7.1 + prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 + stylelint: 14.12.1 + stylelint-config-recommended: 9.0.0_stylelint@14.12.1 + stylelint-config-standard: 28.0.0_stylelint@14.12.1 + tailwind-scrollbar: 2.0.1_tailwindcss@3.1.8 + tailwindcss: 3.1.8_postcss@8.4.16 + typescript: 4.8.3 + vite: 3.1.3 + vite-plugin-eslint: 1.8.1_eslint@8.24.0+vite@3.1.3 + vue-eslint-parser: 9.1.0_eslint@8.24.0 + vue-tsc: 0.40.13_typescript@4.8.3 + +packages: + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.19.1: + resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.19.0 + + /@babel/types/7.19.0: + resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@colors/colors/1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /@csstools/selector-specificity/2.0.2_pnx64jze6bptzcedy5bidi3zdi: + resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /@cypress/request/2.88.10: + resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} + engines: {node: '>= 6'} + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + dev: true + + /@cypress/vite-dev-server/3.1.1: + resolution: {integrity: sha512-bZhDt3D3KEu8RDCxMb4GpFJoAEZOMOdFPB1xebHyjTZ6wmTs6i3oi4zXhN6FgGL8kXCI7JZXwC70LthEmxIZfw==} + dependencies: + debug: 4.3.3 + find-up: 6.3.0 + local-pkg: 0.4.1 + node-html-parser: 5.3.3 + pathe: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@cypress/vue/4.2.0_cypress@10.8.0+vue@3.2.39: + resolution: {integrity: sha512-a+5TCBMwng+UUcFSWxzdJ+Wsvtu+XltUKBQCvidysVvPkPF/c/Z+Geyl+sX7tasKT8KIOW9pI90PIwxzQvQh7A==} + engines: {node: '>=8'} + peerDependencies: + '@cypress/webpack-dev-server': '*' + cypress: '>=7.0.0' + vue: '>=3.0.0' + peerDependenciesMeta: + '@cypress/webpack-dev-server': + optional: true + dependencies: + cypress: 10.8.0 + vue: 3.2.39 + dev: true + + /@cypress/xvfb/1.2.4_supports-color@8.1.1: + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + dependencies: + debug: 3.2.7_supports-color@8.1.1 + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@esbuild/android-arm/0.15.9: + resolution: {integrity: sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.9: + resolution: {integrity: sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.3.2: + resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.0 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@headlessui/vue/1.7.2_vue@3.2.39: + resolution: {integrity: sha512-nmmFpQxnAy6zgf5r0pwdAH3Qw2IsSbTgvkpov9RkEVE8A6aPAT4iaAaPEAzdI+sPL5Wby05mhciJXSqtkLu+vQ==} + engines: {node: '>=10'} + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.2.39 + dev: true + + /@heroicons/vue/2.0.11_vue@3.2.39: + resolution: {integrity: sha512-nTfN4aZVCP8Xntt9Q9RvH+vDagFHA4zFCUge6oCdkBrELH1i6K9feubvnEMhRIYdwC+nWULqKyJP7iVoWkR6Eg==} + peerDependencies: + vue: '>= 3' + dependencies: + vue: 3.2.39 + dev: true + + /@humanwhocodes/config-array/0.10.5: + resolution: {integrity: sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@nestjs/common/8.4.4_47vcjb2de6lyibr6g4enoa5lyu: + resolution: {integrity: sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==} + peerDependencies: + cache-manager: '*' + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + cache-manager: + optional: true + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + axios: 0.26.1 + iterare: 1.2.1 + reflect-metadata: 0.1.13 + rxjs: 7.5.5 + tslib: 2.3.1 + uuid: 8.3.2 + transitivePeerDependencies: + - debug + dev: true + + /@nestjs/core/8.4.4_ozyn6uy6pikqhtn6hfkzt5a5w4: + resolution: {integrity: sha512-Ef3yJPuzAttpNfehnGqIV5kHIL9SHptB5F4ERxoU7pT61H3xiYpZw6hSjx68cJO7cc6rm7/N+b4zeuJvFHtvBg==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^8.0.0 + '@nestjs/microservices': ^8.0.0 + '@nestjs/platform-express': ^8.0.0 + '@nestjs/websockets': ^8.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 8.4.4_47vcjb2de6lyibr6g4enoa5lyu + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + object-hash: 3.0.0 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.13 + rxjs: 7.5.5 + tslib: 2.3.1 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@nuxtjs/opencollective/0.3.2: + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /@openapitools/openapi-generator-cli/2.5.2: + resolution: {integrity: sha512-FLgkjzpDiHVsH821db0VDSElDoA6TcspGyq3RD4zLBJaJhbSsRwr4u87sNoyuHKBg4OMJbZMT4iJxAhkosKrzw==} + engines: {node: '>=10.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@nestjs/common': 8.4.4_47vcjb2de6lyibr6g4enoa5lyu + '@nestjs/core': 8.4.4_ozyn6uy6pikqhtn6hfkzt5a5w4 + '@nuxtjs/opencollective': 0.3.2 + chalk: 4.1.2 + commander: 8.3.0 + compare-versions: 4.1.3 + concurrently: 6.5.1 + console.table: 0.10.0 + fs-extra: 10.0.1 + glob: 7.1.6 + inquirer: 8.2.2 + lodash: 4.17.21 + reflect-metadata: 0.1.13 + rxjs: 7.5.5 + tslib: 2.0.3 + transitivePeerDependencies: + - '@nestjs/microservices' + - '@nestjs/platform-express' + - '@nestjs/websockets' + - cache-manager + - class-transformer + - class-validator + - debug + - encoding + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@tailwindcss/aspect-ratio/0.4.2_tailwindcss@3.1.8: + resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + dependencies: + tailwindcss: 3.1.8_postcss@8.4.16 + dev: true + + /@tailwindcss/forms/0.5.3_tailwindcss@3.1.8: + resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.1.8_postcss@8.4.16 + dev: true + + /@tailwindcss/line-clamp/0.4.2_tailwindcss@3.1.8: + resolution: {integrity: sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + dependencies: + tailwindcss: 3.1.8_postcss@8.4.16 + dev: true + + /@tailwindcss/typography/0.5.7_tailwindcss@3.1.8: + resolution: {integrity: sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.1.8_postcss@8.4.16 + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/eslint/8.4.6: + resolution: {integrity: sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==} + dependencies: + '@types/estree': 1.0.0 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/node/14.18.30: + resolution: {integrity: sha512-8OEyg4oc/CqN5+LbInKNLA8MfbGzbC+k8lVPePXazuwEVrVeQ9gwMDX00HJwWbC7syc1FWRU6Mow0Lm+mibHAQ==} + dev: true + + /@types/node/18.7.20: + resolution: {integrity: sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==} + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + + /@types/sinonjs__fake-timers/8.1.1: + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + dev: true + + /@types/sizzle/2.3.3: + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + dev: true + + /@types/uuid/8.3.4: + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + dev: true + + /@types/web-bluetooth/0.0.15: + resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} + dev: true + + /@types/yauzl/2.10.0: + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + requiresBuild: true + dependencies: + '@types/node': 18.7.20 + dev: true + optional: true + + /@typescript-eslint/eslint-plugin/5.38.0_4gkcvl6qsi23tqqawfqgcwtp54: + resolution: {integrity: sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + '@typescript-eslint/scope-manager': 5.38.0 + '@typescript-eslint/type-utils': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + '@typescript-eslint/utils': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + debug: 4.3.4 + eslint: 8.24.0 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.38.0_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.38.0 + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3 + debug: 4.3.4 + eslint: 8.24.0 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.38.0: + resolution: {integrity: sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/visitor-keys': 5.38.0 + dev: true + + /@typescript-eslint/type-utils/5.38.0_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3 + '@typescript-eslint/utils': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + debug: 4.3.4 + eslint: 8.24.0 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.38.0: + resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.38.0_typescript@4.8.3: + resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/visitor-keys': 5.38.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.38.0_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.38.0 + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/typescript-estree': 5.38.0_typescript@4.8.3 + eslint: 8.24.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.24.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.38.0: + resolution: {integrity: sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@vitejs/plugin-vue/3.1.0_vite@3.1.3+vue@3.2.39: + resolution: {integrity: sha512-fmxtHPjSOEIRg6vHYDaem+97iwCUg/uSIaTzp98lhELt2ISOQuDo2hbkBdXod0g15IhfPMQmAxh4heUks2zvDA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.1.3 + vue: 3.2.39 + dev: true + + /@volar/code-gen/0.40.13: + resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==} + dependencies: + '@volar/source-map': 0.40.13 + dev: true + + /@volar/source-map/0.40.13: + resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==} + dependencies: + '@vue/reactivity': 3.2.38 + dev: true + + /@volar/typescript-faster/0.40.13: + resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==} + dependencies: + semver: 7.3.7 + dev: true + + /@volar/vue-language-core/0.40.13: + resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==} + dependencies: + '@volar/code-gen': 0.40.13 + '@volar/source-map': 0.40.13 + '@vue/compiler-core': 3.2.39 + '@vue/compiler-dom': 3.2.39 + '@vue/compiler-sfc': 3.2.39 + '@vue/reactivity': 3.2.39 + '@vue/shared': 3.2.39 + dev: true + + /@volar/vue-typescript/0.40.13: + resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==} + dependencies: + '@volar/code-gen': 0.40.13 + '@volar/typescript-faster': 0.40.13 + '@volar/vue-language-core': 0.40.13 + dev: true + + /@vue/compiler-core/3.2.39: + resolution: {integrity: sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==} + dependencies: + '@babel/parser': 7.19.1 + '@vue/shared': 3.2.39 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.39: + resolution: {integrity: sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==} + dependencies: + '@vue/compiler-core': 3.2.39 + '@vue/shared': 3.2.39 + + /@vue/compiler-sfc/3.2.39: + resolution: {integrity: sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==} + dependencies: + '@babel/parser': 7.19.1 + '@vue/compiler-core': 3.2.39 + '@vue/compiler-dom': 3.2.39 + '@vue/compiler-ssr': 3.2.39 + '@vue/reactivity-transform': 3.2.39 + '@vue/shared': 3.2.39 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.16 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.39: + resolution: {integrity: sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==} + dependencies: + '@vue/compiler-dom': 3.2.39 + '@vue/shared': 3.2.39 + + /@vue/devtools-api/6.3.0: + resolution: {integrity: sha512-OfjtreoF3LtHmte3TrWSoZcyL4XWBL5+dTnCARuJZzTCYuaaO29PGMKCKdmXi4CZ0SiN0Exz1IGSo2S5BgDwEQ==} + dev: false + + /@vue/eslint-config-typescript/11.0.2_nyrdu7uvzr4ojzug6r7f7cpcdq: + resolution: {integrity: sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.38.0_4gkcvl6qsi23tqqawfqgcwtp54 + '@typescript-eslint/parser': 5.38.0_7ilbxdl5iguzcjriqqcg2m5cku + eslint: 8.24.0 + eslint-plugin-vue: 9.5.1_eslint@8.24.0 + typescript: 4.8.3 + vue-eslint-parser: 9.1.0_eslint@8.24.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/reactivity-transform/3.2.39: + resolution: {integrity: sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==} + dependencies: + '@babel/parser': 7.19.1 + '@vue/compiler-core': 3.2.39 + '@vue/shared': 3.2.39 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.38: + resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} + dependencies: + '@vue/shared': 3.2.38 + dev: true + + /@vue/reactivity/3.2.39: + resolution: {integrity: sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==} + dependencies: + '@vue/shared': 3.2.39 + + /@vue/runtime-core/3.2.39: + resolution: {integrity: sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==} + dependencies: + '@vue/reactivity': 3.2.39 + '@vue/shared': 3.2.39 + + /@vue/runtime-dom/3.2.39: + resolution: {integrity: sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==} + dependencies: + '@vue/runtime-core': 3.2.39 + '@vue/shared': 3.2.39 + csstype: 2.6.21 + + /@vue/server-renderer/3.2.39_vue@3.2.39: + resolution: {integrity: sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==} + peerDependencies: + vue: 3.2.39 + dependencies: + '@vue/compiler-ssr': 3.2.39 + '@vue/shared': 3.2.39 + vue: 3.2.39 + + /@vue/shared/3.2.38: + resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} + dev: true + + /@vue/shared/3.2.39: + resolution: {integrity: sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==} + + /@vueuse/components/9.2.0_vue@3.2.39: + resolution: {integrity: sha512-NgQRhq5v1LRZsQq21rJlY8VjEqYg5xWiGErBftY+HaBhHsLAn4PxJxtvbe9uZNdOQlRdWM3UPUF6NO/sWfnyWw==} + dependencies: + '@vueuse/core': 9.2.0_vue@3.2.39 + '@vueuse/shared': 9.2.0_vue@3.2.39 + vue-demi: 0.13.11_vue@3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/core/9.2.0_vue@3.2.39: + resolution: {integrity: sha512-/MZ6qpz6uSyaXrtoeBWQzAKRG3N7CvfVWvQxiM3ei3Xe5ydOjjtVbo7lGl9p8dECV93j7W8s63A8H0kFLpLyxg==} + dependencies: + '@types/web-bluetooth': 0.0.15 + '@vueuse/metadata': 9.2.0 + '@vueuse/shared': 9.2.0_vue@3.2.39 + vue-demi: 0.13.11_vue@3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/head/0.7.12_vue@3.2.39: + resolution: {integrity: sha512-sRcrE6VohiHInQR0sB0U8H8x2hAKdo+AIhd5PWBLx1jUp2vwyeQyA/4rlCzP5CMDB8z61MLvsOCApFJrRMRtTQ==} + peerDependencies: + vue: '>=2.7 || >=3' + dependencies: + '@zhead/schema-vue': 0.7.4_vue@3.2.39 + vue: 3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + dev: true + + /@vueuse/integrations/9.2.0_4wpa57pufl54tjn6riotx62t64: + resolution: {integrity: sha512-0NerkCPUUWnbEb0ZZaJyrO8YKPPClR9+aLLF8yBbG/XRsoEo7pcpVq8d+uMhfHrXABoUpKD+9FZ+Tz/aRb7yFg==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 9.2.0_vue@3.2.39 + '@vueuse/shared': 9.2.0_vue@3.2.39 + jwt-decode: 3.1.2 + vue-demi: 0.13.11_vue@3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/metadata/9.2.0: + resolution: {integrity: sha512-exN4KE6iquxDCdt72BgEhb3tlOpECtD61AUdXnUqBTIUCl70x1Ar/QXo3bYcvxmdMS2/peQyfeTzBjRTpvL5xw==} + dev: true + + /@vueuse/shared/9.2.0_vue@3.2.39: + resolution: {integrity: sha512-NnRp/noSWuXW0dKhZK5D0YLrDi0nmZ18UeEgwXQq7Ul5TTP93lcNnKjrHtd68j2xFB/l59yPGFlCryL692bnrA==} + dependencies: + vue-demi: 0.13.11_vue@3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@zhead/schema-vue/0.7.4_vue@3.2.39: + resolution: {integrity: sha512-Q7wPUly3ZWbPYQ5SEJBUuD6Mw3wiUfPMPquGfqsR2KF6sxQKRF8oaHnRLuu2uxpjuXjkzpBlZBPu1JgQX+Lf6Q==} + peerDependencies: + vue: '>=2.7 || >=3' + dependencies: + '@vueuse/shared': 9.2.0_vue@3.2.39 + '@zhead/schema': 0.7.4 + vue: 3.2.39 + transitivePeerDependencies: + - '@vue/composition-api' + dev: true + + /@zhead/schema/0.7.4: + resolution: {integrity: sha512-18gfgmZL8gM64JdcT11d1rYLnCaY2mOtbDDSAXtCySanPGpkA1r+w01LCssEI/OfLdoZPS/kYCIW09d1PmUFfQ==} + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + dev: true + + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /autoprefixer/10.4.12_postcss@8.4.16: + resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001412 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + + /axios/0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + dependencies: + follow-redirects: 1.15.2 + transitivePeerDependencies: + - debug + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /balanced-match/2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /blob-util/2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + dev: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001412 + electron-to-chromium: 1.4.261 + node-releases: 2.0.6 + update-browserslist-db: 1.0.9_browserslist@4.21.4 + dev: true + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /cachedir/2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001412 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001412: + resolution: {integrity: sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==} + dev: true + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-more-types/2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /ci-info/3.4.0: + resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + dev: true + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners/2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: true + + /cli-table3/0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-width/3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui/7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /compare-versions/4.1.3: + resolution: {integrity: sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true + + /concurrently/6.5.1: + resolution: {integrity: sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + date-fns: 2.29.3 + lodash: 4.17.21 + rxjs: 6.6.7 + spawn-command: 0.0.2-1 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 16.2.0 + dev: true + + /concurrently/7.4.0: + resolution: {integrity: sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==} + engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} + hasBin: true + dependencies: + chalk: 4.1.2 + date-fns: 2.29.3 + lodash: 4.17.21 + rxjs: 7.5.6 + shell-quote: 1.7.3 + spawn-command: 0.0.2-1 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.5.1 + dev: true + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + + /console.table/0.10.0: + resolution: {integrity: sha1-CRcCVYiHW+/XDPLv9L7yxuLXXQQ=} + engines: {node: '> 0.10'} + dependencies: + easy-table: 1.1.0 + dev: true + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /cosmiconfig/7.0.1: + resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cross-env/7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-declaration-sorter/6.3.1_postcss@8.4.16: + resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.16 + dev: true + + /css-functions-list/3.1.0: + resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==} + engines: {node: '>=12.22'} + dev: true + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssnano-preset-default/5.2.12_postcss@8.4.16: + resolution: {integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.3.1_postcss@8.4.16 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-calc: 8.2.4_postcss@8.4.16 + postcss-colormin: 5.3.0_postcss@8.4.16 + postcss-convert-values: 5.1.2_postcss@8.4.16 + postcss-discard-comments: 5.1.2_postcss@8.4.16 + postcss-discard-duplicates: 5.1.0_postcss@8.4.16 + postcss-discard-empty: 5.1.1_postcss@8.4.16 + postcss-discard-overridden: 5.1.0_postcss@8.4.16 + postcss-merge-longhand: 5.1.6_postcss@8.4.16 + postcss-merge-rules: 5.1.2_postcss@8.4.16 + postcss-minify-font-values: 5.1.0_postcss@8.4.16 + postcss-minify-gradients: 5.1.1_postcss@8.4.16 + postcss-minify-params: 5.1.3_postcss@8.4.16 + postcss-minify-selectors: 5.2.1_postcss@8.4.16 + postcss-normalize-charset: 5.1.0_postcss@8.4.16 + postcss-normalize-display-values: 5.1.0_postcss@8.4.16 + postcss-normalize-positions: 5.1.1_postcss@8.4.16 + postcss-normalize-repeat-style: 5.1.1_postcss@8.4.16 + postcss-normalize-string: 5.1.0_postcss@8.4.16 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.16 + postcss-normalize-unicode: 5.1.0_postcss@8.4.16 + postcss-normalize-url: 5.1.0_postcss@8.4.16 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.16 + postcss-ordered-values: 5.1.3_postcss@8.4.16 + postcss-reduce-initial: 5.1.0_postcss@8.4.16 + postcss-reduce-transforms: 5.1.0_postcss@8.4.16 + postcss-svgo: 5.1.0_postcss@8.4.16 + postcss-unique-selectors: 5.1.1_postcss@8.4.16 + dev: true + + /cssnano-utils/3.1.0_postcss@8.4.16: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /cssnano/5.1.13_postcss@8.4.16: + resolution: {integrity: sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.12_postcss@8.4.16 + lilconfig: 2.0.6 + postcss: 8.4.16 + yaml: 1.10.2 + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /csstype/2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + + /cypress/10.8.0: + resolution: {integrity: sha512-QVse0dnLm018hgti2enKMVZR9qbIO488YGX06nH5j3Dg1isL38DwrBtyrax02CANU6y8F4EJUuyW6HJKw1jsFA==} + engines: {node: '>=12.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@cypress/request': 2.88.10 + '@cypress/xvfb': 1.2.4_supports-color@8.1.1 + '@types/node': 14.18.30 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.3 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.3.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.3 + commander: 5.1.0 + common-tags: 1.8.2 + dayjs: 1.11.5 + debug: 4.3.4_supports-color@8.1.1 + enquirer: 2.3.6 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1_supports-color@8.1.1 + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0_enquirer@2.3.6 + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.6 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.3.7 + supports-color: 8.1.1 + tmp: 0.2.1 + untildify: 4.0.0 + yauzl: 2.10.0 + dev: true + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} + engines: {node: '>=0.11'} + dev: true + + /dayjs/1.11.5: + resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} + dev: true + + /debug/3.2.7_supports-color@8.1.1: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 8.1.1 + dev: true + + /debug/4.3.3: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.4_supports-color@8.1.1: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize-keys/1.1.0: + resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /defaults/1.0.3: + resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} + dependencies: + clone: 1.0.4 + dev: true + + /defined/1.0.0: + resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.0 + minimist: 1.2.6 + dev: true + + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /dotenv/16.0.2: + resolution: {integrity: sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==} + engines: {node: '>=12'} + dev: true + + /easy-table/1.1.0: + resolution: {integrity: sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=} + optionalDependencies: + wcwidth: 1.0.1 + dev: true + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /electron-to-chromium/1.4.261: + resolution: {integrity: sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /esbuild-android-64/0.15.9: + resolution: {integrity: sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.9: + resolution: {integrity: sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.9: + resolution: {integrity: sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.9: + resolution: {integrity: sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.9: + resolution: {integrity: sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.9: + resolution: {integrity: sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.9: + resolution: {integrity: sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.9: + resolution: {integrity: sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.9: + resolution: {integrity: sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.9: + resolution: {integrity: sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.9: + resolution: {integrity: sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.9: + resolution: {integrity: sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.9: + resolution: {integrity: sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.9: + resolution: {integrity: sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.9: + resolution: {integrity: sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.9: + resolution: {integrity: sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.9: + resolution: {integrity: sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.9: + resolution: {integrity: sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.9: + resolution: {integrity: sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.9: + resolution: {integrity: sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.9: + resolution: {integrity: sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.9 + '@esbuild/linux-loong64': 0.15.9 + esbuild-android-64: 0.15.9 + esbuild-android-arm64: 0.15.9 + esbuild-darwin-64: 0.15.9 + esbuild-darwin-arm64: 0.15.9 + esbuild-freebsd-64: 0.15.9 + esbuild-freebsd-arm64: 0.15.9 + esbuild-linux-32: 0.15.9 + esbuild-linux-64: 0.15.9 + esbuild-linux-arm: 0.15.9 + esbuild-linux-arm64: 0.15.9 + esbuild-linux-mips64le: 0.15.9 + esbuild-linux-ppc64le: 0.15.9 + esbuild-linux-riscv64: 0.15.9 + esbuild-linux-s390x: 0.15.9 + esbuild-netbsd-64: 0.15.9 + esbuild-openbsd-64: 0.15.9 + esbuild-sunos-64: 0.15.9 + esbuild-windows-32: 0.15.9 + esbuild-windows-64: 0.15.9 + esbuild-windows-arm64: 0.15.9 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier/8.5.0_eslint@8.24.0: + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.24.0 + dev: true + + /eslint-plugin-prettier/4.2.1_cfn5x6ujhhgzv3423d6k7r2zzm: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.24.0 + eslint-config-prettier: 8.5.0_eslint@8.24.0 + prettier: 2.7.1 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-vue/9.5.1_eslint@8.24.0: + resolution: {integrity: sha512-Y0sL2RY7Xc9S8kNih9lbwHIDmewUg9bfas6WSzsOWRgDXhIHKxRBZYNAnVcXBFfE+bMWHUA5GLChl7TcTYUI8w==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.24.0 + eslint-utils: 3.0.0_eslint@8.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.10 + semver: 7.3.7 + vue-eslint-parser: 9.1.0_eslint@8.24.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.24.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.24.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.24.0: + resolution: {integrity: sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.2 + '@humanwhocodes/config-array': 0.10.5 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@humanwhocodes/module-importer': 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.24.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-sdsl: 4.1.4 + 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.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.0: + resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eventemitter2/6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + dev: true + + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /executable/4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-zip/2.0.1_supports-color@8.1.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4_supports-color@8.1.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff/1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fastest-levenshtein/1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fd-slicer/1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.1.1 + path-exists: 5.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + + /fs-extra/10.0.1: + resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /getos/3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + dependencies: + async: 3.2.4 + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs/3.0.0: + resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: true + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globjoin/0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /html-tags/3.2.0: + resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + engines: {node: '>=8'} + dev: true + + /http-signature/1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.17.0 + dev: true + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini/2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + + /inquirer/8.2.2: + resolution: {integrity: sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.5.5 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-ci/3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.4.0 + dev: true + + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + dependencies: + has: 1.0.3 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.0 + is-path-inside: 3.0.3 + dev: true + + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /iterare/1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + dev: true + + /js-sdsl/4.1.4: + resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsprim/2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jwt-decode/3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /known-css-properties/0.25.0: + resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==} + dev: true + + /lazy-ass/1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /listr2/3.14.0_enquirer@2.3.6: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.19 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.6 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /local-pkg/0.4.1: + resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} + engines: {node: '>=14'} + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /locate-path/7.1.1: + resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.castarray/4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: true + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.once/4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /mathml-tag-names/2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /meow/9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /mini-svg-data-uri/1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /mute-stream/0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-html-parser/5.3.3: + resolution: {integrity: sha512-ncg1033CaX9UexbyA7e1N0aAoAYRDiV8jkTvzEnfd1GDvzFdrsXLzR4p4ik8mwLgnaKP/jyUFWDy9q3jvRT2Jw==} + dependencies: + css-select: 4.3.0 + he: 1.2.0 + dev: true + + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.10.0 + semver: 7.3.7 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /ora/5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.7.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /ospath/1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-locate/6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists/5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-to-regexp/3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe/0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + dev: true + + /pend/1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinia/2.0.22_arz4dztosvwy2ghjrlh2wdhejm: + resolution: {integrity: sha512-u+b8/BC+tmvo3ACbYO2w5NfxHWFOjvvw9DQnyT0dW8aUMCPRQT5QnfZ5R5W2MzZBMTeZRMQI7V/QFbafmM9QHw==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.3.0 + typescript: 4.8.3 + vue: 3.2.39 + vue-demi: 0.13.11_vue@3.2.39 + dev: false + + /postcss-calc/8.2.4_postcss@8.4.16: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin/5.3.0_postcss@8.4.16: + resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-discard-comments/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-discard-duplicates/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-discard-empty/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-discard-overridden/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-import/14.1.0_postcss@8.4.16: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-import/15.0.0_postcss@8.4.16: + resolution: {integrity: sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0_postcss@8.4.16: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.16 + dev: true + + /postcss-load-config/3.1.4_postcss@8.4.16: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.16 + yaml: 1.10.2 + dev: true + + /postcss-media-query-parser/0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-merge-longhand/5.1.6_postcss@8.4.16: + resolution: {integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.0_postcss@8.4.16 + dev: true + + /postcss-merge-rules/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-minify-font-values/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params/5.1.3_postcss@8.4.16: + resolution: {integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors/5.2.1_postcss@8.4.16: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-nested/5.0.6_postcss@8.4.16: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-nesting/10.2.0_postcss@8.4.16: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-normalize-charset/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-normalize-display-values/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values/5.1.3_postcss@8.4.16: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reduce-initial/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + postcss: 8.4.16 + dev: true + + /postcss-reduce-transforms/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-resolve-nested-selector/0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser/6.0.0_postcss@8.4.16: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: true + + /postcss-unique-selectors/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers/1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier-plugin-tailwindcss/0.1.13_prettier@2.7.1: + resolution: {integrity: sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==} + engines: {node: '>=12.17.0'} + peerDependencies: + prettier: '>=2.2.0' + dependencies: + prettier: 2.7.1 + dev: true + + /prettier/2.7.1: + resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-bytes/5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /proxy-from-env/1.0.0: + resolution: {integrity: sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /reflect-metadata/0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /request-progress/3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + dependencies: + throttleit: 1.0.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup/2.78.1: + resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async/2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs/6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /rxjs/7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + dependencies: + tslib: 2.3.1 + dev: true + + /rxjs/7.5.6: + resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + dependencies: + tslib: 2.4.0 + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote/1.7.3: + resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + + /spawn-command/0.0.2-1: + resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} + dev: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids/3.0.12: + resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-search/0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /stylehacks/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /stylelint-config-recommended/9.0.0_stylelint@14.12.1: + resolution: {integrity: sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==} + peerDependencies: + stylelint: ^14.10.0 + dependencies: + stylelint: 14.12.1 + dev: true + + /stylelint-config-standard/28.0.0_stylelint@14.12.1: + resolution: {integrity: sha512-q/StuowDdDmFCravzGHAwgS9pjX0bdOQUEBBDIkIWsQuYGgYz/xsO8CM6eepmIQ1fc5bKdDVimlJZ6MoOUcJ5Q==} + peerDependencies: + stylelint: ^14.11.0 + dependencies: + stylelint: 14.12.1 + stylelint-config-recommended: 9.0.0_stylelint@14.12.1 + dev: true + + /stylelint/14.12.1: + resolution: {integrity: sha512-ZEM4TuksChMBfuPadQsHUkbOoRySAT9QMfDvvYxdAchOJl0p+csTMBXOu6ORAAxKhwBmxqJiep8V88bXfNs3EQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.0.1 + css-functions-list: 3.1.0 + debug: 4.3.4 + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.0 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.25.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0_postcss@8.4.16 + postcss-selector-parser: 6.0.10 + 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: 2.3.0 + svg-tags: 1.0.0 + table: 6.8.0 + v8-compile-cache: 2.3.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks/2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svg-tags/1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /table/6.8.0: + resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.11.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tailwind-scrollbar/2.0.1_tailwindcss@3.1.8: + resolution: {integrity: sha512-OcR7qHBbux4k+k6bWqnEQFYFooLK/F4dhkBz6nvswIoaA9ancZ5h20e0tyV7ifSWLDCUBtpG+1NHRA8HMRH/wg==} + engines: {node: '>=12.13.0'} + peerDependencies: + tailwindcss: 3.x + dependencies: + tailwindcss: 3.1.8_postcss@8.4.16 + dev: true + + /tailwindcss/3.1.8_postcss@8.4.16: + resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-import: 14.1.0_postcss@8.4.16 + postcss-js: 4.0.0_postcss@8.4.16 + postcss-load-config: 3.1.4_postcss@8.4.16 + postcss-nested: 5.0.6_postcss@8.4.16 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /throttleit/1.0.0: + resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + dev: true + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tree-kill/1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.0.3: + resolution: {integrity: sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==} + dev: true + + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + + /tsutils/3.21.0_typescript@4.8.3: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.8.3 + dev: true + + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /typescript/4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + engines: {node: '>=4.2.0'} + hasBin: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /untildify/4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db/1.0.9_browserslist@4.21.4: + resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /uuid/9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + dev: false + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /verror/1.10.0: + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vite-plugin-eslint/1.8.1_eslint@8.24.0+vite@3.1.3: + resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} + peerDependencies: + eslint: '>=7' + vite: '>=2' + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.4.6 + eslint: 8.24.0 + rollup: 2.79.1 + vite: 3.1.3 + dev: true + + /vite/3.1.3: + resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.9 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.78.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vue-demi/0.13.11_vue@3.2.39: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.39 + + /vue-eslint-parser/9.1.0_eslint@8.24.0: + resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.24.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + lodash: 4.17.21 + semver: 7.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-router/4.1.5_vue@3.2.39: + resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.3.0 + vue: 3.2.39 + dev: false + + /vue-tsc/0.40.13_typescript@4.8.3: + resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': 0.40.13 + '@volar/vue-typescript': 0.40.13 + typescript: 4.8.3 + dev: true + + /vue/3.2.39: + resolution: {integrity: sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==} + dependencies: + '@vue/compiler-dom': 3.2.39 + '@vue/compiler-sfc': 3.2.39 + '@vue/runtime-dom': 3.2.39 + '@vue/server-renderer': 3.2.39_vue@3.2.39 + '@vue/shared': 3.2.39 + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.3 + dev: true + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic/4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs/17.5.1: + resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yauzl/2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zod/3.19.1: + resolution: {integrity: sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA==} + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..031831ba --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,9 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + "tailwindcss/nesting": {}, + "postcss-import": {}, + ...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {}), + }, +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..534ed2ee --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,4 @@ +module.exports = { + plugins: [require("prettier-plugin-tailwindcss")], + tailwindConfig: "tailwind.config.js", +} diff --git a/pyproject.toml b/pyproject.toml index 26249fd8..a14db648 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ license = "MIT" maintainers = ["Cody Fincher "] name = "app" packages = [ - {include = "app", from = "src"}, + {include = "app", from = "src/server"}, ] readme = "README.md" repository = "https://github.com/cofin/starlite-spa" diff --git a/src/app/utils/__init__.py b/src/app/utils/__init__.py deleted file mode 100644 index 36782c0c..00000000 --- a/src/app/utils/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from app.utils import asyncer, db, module_loading, serializers, text - -__all__ = ["db", "asyncer", "module_loading", "text", "serializers"] diff --git a/src/app/utils/db/__init__.py b/src/app/utils/db/__init__.py deleted file mode 100644 index 18208dc2..00000000 --- a/src/app/utils/db/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from . import db_ready - -__all__ = ["db_ready"] diff --git a/src/app/utils/text/__init__.py b/src/app/utils/text/__init__.py deleted file mode 100644 index 25b027f8..00000000 --- a/src/app/utils/text/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .slugify import slugify - -__all__ = ["slugify"] diff --git a/src/app/__init__.py b/src/server/app/__init__.py similarity index 100% rename from src/app/__init__.py rename to src/server/app/__init__.py diff --git a/src/app/__main__.py b/src/server/app/__main__.py similarity index 100% rename from src/app/__main__.py rename to src/server/app/__main__.py diff --git a/src/app/asgi.py b/src/server/app/asgi.py similarity index 100% rename from src/app/asgi.py rename to src/server/app/asgi.py diff --git a/src/app/cli/__init__.py b/src/server/app/cli/__init__.py similarity index 100% rename from src/app/cli/__init__.py rename to src/server/app/cli/__init__.py diff --git a/src/app/cli/app.py b/src/server/app/cli/app.py similarity index 100% rename from src/app/cli/app.py rename to src/server/app/cli/app.py diff --git a/src/app/cli/commands/__init__.py b/src/server/app/cli/commands/__init__.py similarity index 100% rename from src/app/cli/commands/__init__.py rename to src/server/app/cli/commands/__init__.py diff --git a/src/app/cli/commands/manage.py b/src/server/app/cli/commands/manage.py similarity index 99% rename from src/app/cli/commands/manage.py rename to src/server/app/cli/commands/manage.py index fed24b75..f5c3913c 100644 --- a/src/app/cli/commands/manage.py +++ b/src/server/app/cli/commands/manage.py @@ -7,17 +7,16 @@ import click from alembic import command as migration_command from alembic.config import Config as AlembicConfig -from pydantic import EmailStr, SecretStr -from rich.prompt import Confirm -from sqlalchemy import Table -from sqlalchemy.schema import DropTable - from app import schemas, services, utils from app.asgi import app from app.cli.console import console from app.config import settings from app.db import AsyncScopedSession, engine from app.db.models import BaseModel, meta +from pydantic import EmailStr, SecretStr +from rich.prompt import Confirm +from sqlalchemy import Table +from sqlalchemy.schema import DropTable logger = logging.getLogger() @@ -238,7 +237,7 @@ def purge_database(no_prompt: bool) -> None: help="Shows the current revision for the database.", ) def show_database_revision() -> None: - """Starts the Gluent Console API.""" + """Show current database revision""" alembic_cfg = AlembicConfig(settings.db.MIGRATION_CONFIG) alembic_cfg.set_main_option("script_location", settings.db.MIGRATION_PATH) migration_command.current(alembic_cfg, verbose=False) diff --git a/src/app/cli/commands/run.py b/src/server/app/cli/commands/run.py similarity index 100% rename from src/app/cli/commands/run.py rename to src/server/app/cli/commands/run.py diff --git a/src/app/cli/console.py b/src/server/app/cli/console.py similarity index 100% rename from src/app/cli/console.py rename to src/server/app/cli/console.py diff --git a/src/app/config/__init__.py b/src/server/app/config/__init__.py similarity index 100% rename from src/app/config/__init__.py rename to src/server/app/config/__init__.py diff --git a/src/app/config/alembic.ini b/src/server/app/config/alembic.ini similarity index 100% rename from src/app/config/alembic.ini rename to src/server/app/config/alembic.ini diff --git a/src/app/config/application.py b/src/server/app/config/application.py similarity index 99% rename from src/app/config/application.py rename to src/server/app/config/application.py index 5a0e5ac0..0e910b43 100644 --- a/src/app/config/application.py +++ b/src/server/app/config/application.py @@ -12,13 +12,12 @@ from typing import Any, Literal, Optional, Union, cast from uuid import NAMESPACE_DNS, uuid3 -from pydantic import BaseSettings as _BaseSettings -from pydantic import SecretBytes, SecretStr, ValidationError, validator - from app.config.paths import BASE_DIR from app.utils.serializers import convert_datetime_to_gmt, deserialize_object, serialize_object -from app.utils.text import slugify +from app.utils.slugify_text import slugify from app.version import __version__ +from pydantic import BaseSettings as _BaseSettings +from pydantic import SecretBytes, SecretStr, ValidationError, validator __all__ = [ "BASE_DIR", diff --git a/src/app/config/logging.py b/src/server/app/config/logging.py similarity index 99% rename from src/app/config/logging.py rename to src/server/app/config/logging.py index 2a984130..1bf7f3be 100644 --- a/src/app/config/logging.py +++ b/src/server/app/config/logging.py @@ -2,11 +2,10 @@ import re from typing import Any -from starlette.status import HTTP_200_OK -from starlite.config import LoggingConfig - from app.config.application import settings from app.config.paths import urls +from starlette.status import HTTP_200_OK +from starlite.config import LoggingConfig class AccessLogFilter(logging.Filter): @@ -87,7 +86,6 @@ def filter(self, record: logging.LogRecord) -> bool: }, }, ) -log_config.configure() """ Pre-configured log config for application. """ diff --git a/src/app/config/paths.py b/src/server/app/config/paths.py similarity index 100% rename from src/app/config/paths.py rename to src/server/app/config/paths.py diff --git a/src/app/core/__init__.py b/src/server/app/core/__init__.py similarity index 100% rename from src/app/core/__init__.py rename to src/server/app/core/__init__.py diff --git a/src/app/core/cache.py b/src/server/app/core/cache.py similarity index 100% rename from src/app/core/cache.py rename to src/server/app/core/cache.py diff --git a/src/app/core/client/__init__.py b/src/server/app/core/client/__init__.py similarity index 100% rename from src/app/core/client/__init__.py rename to src/server/app/core/client/__init__.py diff --git a/src/app/core/client/client.py b/src/server/app/core/client/client.py similarity index 100% rename from src/app/core/client/client.py rename to src/server/app/core/client/client.py diff --git a/src/app/core/client/endpoint.py b/src/server/app/core/client/endpoint.py similarity index 100% rename from src/app/core/client/endpoint.py rename to src/server/app/core/client/endpoint.py diff --git a/src/app/core/compression.py b/src/server/app/core/compression.py similarity index 100% rename from src/app/core/compression.py rename to src/server/app/core/compression.py diff --git a/src/app/core/cors.py b/src/server/app/core/cors.py similarity index 100% rename from src/app/core/cors.py rename to src/server/app/core/cors.py diff --git a/src/app/core/csrf.py b/src/server/app/core/csrf.py similarity index 100% rename from src/app/core/csrf.py rename to src/server/app/core/csrf.py diff --git a/src/app/core/exceptions.py b/src/server/app/core/exceptions.py similarity index 100% rename from src/app/core/exceptions.py rename to src/server/app/core/exceptions.py diff --git a/src/app/core/guards.py b/src/server/app/core/guards.py similarity index 100% rename from src/app/core/guards.py rename to src/server/app/core/guards.py diff --git a/src/app/core/middleware/__init__.py b/src/server/app/core/middleware/__init__.py similarity index 100% rename from src/app/core/middleware/__init__.py rename to src/server/app/core/middleware/__init__.py diff --git a/src/app/core/middleware/db.py b/src/server/app/core/middleware/db.py similarity index 100% rename from src/app/core/middleware/db.py rename to src/server/app/core/middleware/db.py diff --git a/src/app/core/openapi.py b/src/server/app/core/openapi.py similarity index 100% rename from src/app/core/openapi.py rename to src/server/app/core/openapi.py diff --git a/src/app/core/response.py b/src/server/app/core/response.py similarity index 100% rename from src/app/core/response.py rename to src/server/app/core/response.py diff --git a/src/app/core/security.py b/src/server/app/core/security.py similarity index 100% rename from src/app/core/security.py rename to src/server/app/core/security.py diff --git a/src/app/core/static_files.py b/src/server/app/core/static_files.py similarity index 100% rename from src/app/core/static_files.py rename to src/server/app/core/static_files.py diff --git a/src/app/db/__init__.py b/src/server/app/db/__init__.py similarity index 100% rename from src/app/db/__init__.py rename to src/server/app/db/__init__.py diff --git a/src/app/utils/db/db_ready.py b/src/server/app/db/db_ready.py similarity index 100% rename from src/app/utils/db/db_ready.py rename to src/server/app/db/db_ready.py diff --git a/src/app/db/db_types.py b/src/server/app/db/db_types.py similarity index 100% rename from src/app/db/db_types.py rename to src/server/app/db/db_types.py diff --git a/src/app/db/engine.py b/src/server/app/db/engine.py similarity index 100% rename from src/app/db/engine.py rename to src/server/app/db/engine.py diff --git a/src/app/db/migrations/README b/src/server/app/db/migrations/README similarity index 100% rename from src/app/db/migrations/README rename to src/server/app/db/migrations/README diff --git a/src/app/db/migrations/env.py b/src/server/app/db/migrations/env.py similarity index 100% rename from src/app/db/migrations/env.py rename to src/server/app/db/migrations/env.py diff --git a/src/app/db/migrations/script.py.mako b/src/server/app/db/migrations/script.py.mako similarity index 100% rename from src/app/db/migrations/script.py.mako rename to src/server/app/db/migrations/script.py.mako diff --git a/src/app/db/migrations/versions/.gitkeep b/src/server/app/db/migrations/versions/.gitkeep similarity index 100% rename from src/app/db/migrations/versions/.gitkeep rename to src/server/app/db/migrations/versions/.gitkeep diff --git a/src/app/db/migrations/versions/2022-09-24_2aca7639e493.py b/src/server/app/db/migrations/versions/2022-09-24_2aca7639e493.py similarity index 100% rename from src/app/db/migrations/versions/2022-09-24_2aca7639e493.py rename to src/server/app/db/migrations/versions/2022-09-24_2aca7639e493.py diff --git a/src/app/db/models/__init__.py b/src/server/app/db/models/__init__.py similarity index 100% rename from src/app/db/models/__init__.py rename to src/server/app/db/models/__init__.py diff --git a/src/app/db/models/base.py b/src/server/app/db/models/base.py similarity index 100% rename from src/app/db/models/base.py rename to src/server/app/db/models/base.py diff --git a/src/app/db/models/team.py b/src/server/app/db/models/team.py similarity index 100% rename from src/app/db/models/team.py rename to src/server/app/db/models/team.py diff --git a/src/app/db/models/upload.py b/src/server/app/db/models/upload.py similarity index 100% rename from src/app/db/models/upload.py rename to src/server/app/db/models/upload.py diff --git a/src/app/db/models/user.py b/src/server/app/db/models/user.py similarity index 100% rename from src/app/db/models/user.py rename to src/server/app/db/models/user.py diff --git a/src/app/db/repositories/__init__.py b/src/server/app/db/repositories/__init__.py similarity index 100% rename from src/app/db/repositories/__init__.py rename to src/server/app/db/repositories/__init__.py diff --git a/src/app/db/repositories/base.py b/src/server/app/db/repositories/base.py similarity index 99% rename from src/app/db/repositories/base.py rename to src/server/app/db/repositories/base.py index 83dfb436..30e8ab6e 100644 --- a/src/app/db/repositories/base.py +++ b/src/server/app/db/repositories/base.py @@ -7,6 +7,8 @@ from typing import TYPE_CHECKING, Any, Generic, List, Optional, Protocol, TypeVar, Union, overload from uuid import UUID +from app.db.models.base import DatabaseModelType, DatabaseModelWithCreatedUpdatedAtType, DatabaseModelWithSlugType +from app.utils.slugify_text import slugify from pydantic import UUID4 from sqlalchemy.engine import Result from sqlalchemy.exc import IntegrityError, SQLAlchemyError @@ -15,9 +17,6 @@ from sqlalchemy.sql import select from sqlalchemy.sql.selectable import TypedReturnsRows -from app.db.models.base import DatabaseModelType, DatabaseModelWithCreatedUpdatedAtType, DatabaseModelWithSlugType -from app.utils.text import slugify - if TYPE_CHECKING: from sqlalchemy import Executable from sqlalchemy.ext.asyncio import AsyncSession diff --git a/src/app/db/repositories/team.py b/src/server/app/db/repositories/team.py similarity index 100% rename from src/app/db/repositories/team.py rename to src/server/app/db/repositories/team.py diff --git a/src/app/db/repositories/team_invite.py b/src/server/app/db/repositories/team_invite.py similarity index 100% rename from src/app/db/repositories/team_invite.py rename to src/server/app/db/repositories/team_invite.py diff --git a/src/app/db/repositories/upload.py b/src/server/app/db/repositories/upload.py similarity index 100% rename from src/app/db/repositories/upload.py rename to src/server/app/db/repositories/upload.py diff --git a/src/app/db/repositories/user.py b/src/server/app/db/repositories/user.py similarity index 100% rename from src/app/db/repositories/user.py rename to src/server/app/db/repositories/user.py diff --git a/src/app/py.typed b/src/server/app/py.typed similarity index 100% rename from src/app/py.typed rename to src/server/app/py.typed diff --git a/src/app/schemas/__init__.py b/src/server/app/schemas/__init__.py similarity index 100% rename from src/app/schemas/__init__.py rename to src/server/app/schemas/__init__.py diff --git a/src/app/schemas/base.py b/src/server/app/schemas/base.py similarity index 100% rename from src/app/schemas/base.py rename to src/server/app/schemas/base.py diff --git a/src/app/schemas/health.py b/src/server/app/schemas/health.py similarity index 100% rename from src/app/schemas/health.py rename to src/server/app/schemas/health.py diff --git a/src/app/schemas/message.py b/src/server/app/schemas/message.py similarity index 100% rename from src/app/schemas/message.py rename to src/server/app/schemas/message.py diff --git a/src/app/schemas/team.py b/src/server/app/schemas/team.py similarity index 100% rename from src/app/schemas/team.py rename to src/server/app/schemas/team.py diff --git a/src/app/schemas/team_invite.py b/src/server/app/schemas/team_invite.py similarity index 100% rename from src/app/schemas/team_invite.py rename to src/server/app/schemas/team_invite.py diff --git a/src/app/schemas/upload.py b/src/server/app/schemas/upload.py similarity index 100% rename from src/app/schemas/upload.py rename to src/server/app/schemas/upload.py diff --git a/src/app/schemas/user.py b/src/server/app/schemas/user.py similarity index 100% rename from src/app/schemas/user.py rename to src/server/app/schemas/user.py diff --git a/src/app/services/__init__.py b/src/server/app/services/__init__.py similarity index 100% rename from src/app/services/__init__.py rename to src/server/app/services/__init__.py diff --git a/src/app/services/base.py b/src/server/app/services/base.py similarity index 100% rename from src/app/services/base.py rename to src/server/app/services/base.py diff --git a/src/app/services/health.py b/src/server/app/services/health.py similarity index 100% rename from src/app/services/health.py rename to src/server/app/services/health.py diff --git a/src/app/services/team.py b/src/server/app/services/team.py similarity index 100% rename from src/app/services/team.py rename to src/server/app/services/team.py diff --git a/src/app/services/team_invite.py b/src/server/app/services/team_invite.py similarity index 100% rename from src/app/services/team_invite.py rename to src/server/app/services/team_invite.py diff --git a/src/app/services/user.py b/src/server/app/services/user.py similarity index 100% rename from src/app/services/user.py rename to src/server/app/services/user.py diff --git a/src/server/app/utils/__init__.py b/src/server/app/utils/__init__.py new file mode 100644 index 00000000..8e26136c --- /dev/null +++ b/src/server/app/utils/__init__.py @@ -0,0 +1,3 @@ +from app.utils import asyncer, module_loading, serializers, slugify_text + +__all__ = ["asyncer", "module_loading", "slugify_text", "serializers"] diff --git a/src/app/utils/asyncer.py b/src/server/app/utils/asyncer.py similarity index 100% rename from src/app/utils/asyncer.py rename to src/server/app/utils/asyncer.py diff --git a/src/app/utils/module_loading.py b/src/server/app/utils/module_loading.py similarity index 100% rename from src/app/utils/module_loading.py rename to src/server/app/utils/module_loading.py diff --git a/src/app/utils/serializers.py b/src/server/app/utils/serializers.py similarity index 100% rename from src/app/utils/serializers.py rename to src/server/app/utils/serializers.py diff --git a/src/app/utils/text/slugify.py b/src/server/app/utils/slugify_text.py similarity index 100% rename from src/app/utils/text/slugify.py rename to src/server/app/utils/slugify_text.py diff --git a/src/app/version.py b/src/server/app/version.py similarity index 100% rename from src/app/version.py rename to src/server/app/version.py diff --git a/src/app/web/__init__.py b/src/server/app/web/__init__.py similarity index 99% rename from src/app/web/__init__.py rename to src/server/app/web/__init__.py index bcd489c9..00d7c973 100644 --- a/src/app/web/__init__.py +++ b/src/server/app/web/__init__.py @@ -1,6 +1,5 @@ -from starlite import Router - from app.web import routes +from starlite import Router router = Router( path="", diff --git a/src/app/web/public/.gitkeep b/src/server/app/web/public/.gitkeep similarity index 100% rename from src/app/web/public/.gitkeep rename to src/server/app/web/public/.gitkeep diff --git a/src/server/app/web/public/css/extra.css b/src/server/app/web/public/css/extra.css new file mode 100644 index 00000000..a5af96b3 --- /dev/null +++ b/src/server/app/web/public/css/extra.css @@ -0,0 +1,286 @@ +:root, +body { + --md-text-font-family: Tahoma, Geneva, Verdana, sans-serif; +} + +.md-content__button { + display: none; +} +.md-typeset .md-content__button + h1 { + margin-top: 0; +} + +.md-typeset h1 { + font-size: calc(1rem * 1.35 * 1.35 * 1.35); + margin: 1.35rem 0 1rem; + font-weight: 400; +} + +/* #starlite-banner .cls-1 { + fill: transparent; +} +#starlite-banner #banner-text path { + fill: var(--md-default-fg-color); +} */ +#starlite-banner { + border-radius: 0.5rem; + overflow: hidden; +} +[data-md-color-scheme="mirage-light"] #starlite-banner .cls-1 { + fill: var(--md-default-fg-color--light); +} + +.md-search__form { + background-color: var(--md-default-bg-color) !important; +} + +.md-typeset h2 { + font-size: calc(1rem * 1.35 * 1.35); + margin: 1.35rem 0 1rem; + font-weight: 400; + padding-top: 1rem; + border-top: 1px solid var(--md-default-bg-color--lightest); + border-color: transparent; +} + +.md-typeset h3 { + font-size: calc(1rem * 1.35); + margin: 1.25rem 0 1rem; + font-weight: 400; + padding-top: 1rem; + border-top: 1px solid var(--md-default-bg-color--lightest); + border-color: transparent; +} + +.highlight span.filename { + margin-top: 1rem; +} +.highlight .filename + pre { + margin-bottom: 2rem; +} + +@media screen and (max-width: 76.1875em) { + .md-nav--primary .md-nav__title[for="__drawer"] { + color: var(--md-accent-fg-color); + background-color: var(--md-primary-bg-color); + } + + .md-nav__source { + background-color: var(--md-accent-fg-color); + } + + .md-nav--primary .md-nav__item { + border-top: none; + } +} + +[data-md-color-scheme="mirage"] { + /* Default color shades */ + --md-default-fg-color: #d6dbe1; + --md-default-fg-color--light: hsl(213, 15%, 76%); + --md-default-fg-color--lighter: hsl(213, 15%, 66%); + --md-default-fg-color--lightest: hsl(213, 15%, 56%); + --md-default-bg-color: #1d2433; + --md-default-bg-color--light: hsl(221, 28%, 26%); + --md-default-bg-color--lighter: hsl(221, 28%, 36%); + --md-default-bg-color--lightest: hsl(221, 28%, 46%); + + /* Primary color shades */ + --md-primary-fg-color: #ffae57; + --md-primary-fg-color--light: #ffd580; + --md-primary-fg-color--dark: hsl(31, 90%, 60%); + --md-primary-bg-color: #2f3b54; + --md-primary-bg-color--light: hsl(221, 28%, 33%); + + /* Accent color shades */ + --md-accent-fg-color: #ffd580; + --md-accent-fg-color--transparent: #ffd58033; + --md-accent-bg-color: #171c28; + --md-accent-bg-color--light: hsl(222, 27%, 20%); + + /* Misc */ + --md-footer-fg-color: var(--md-accent-fg-color); + --md-footer-bg-color: var(--md-accent-bg-color); + /* --md-footer-bg-color--dark: var(--md-default-bg-color); */ + + /* Code color shades */ + --md-code-fg-color: var(--md-default-fg-color); + --md-code-bg-color: var(--md-accent-bg-color--light); + + /* Code highlighting color shades */ + --md-code-hl-color: #bae67e99; + --md-code-hl-number-color: #ffd580; + --md-code-hl-special-color: #ef6b73; + --md-code-hl-function-color: #5ccfe6; + --md-code-hl-constant-color: #c3a6ff; + --md-code-hl-keyword-color: #ef6b73; + --md-code-hl-string-color: #bae67e; + --md-code-hl-name-color: var(--md-code-fg-color); + --md-code-hl-operator-color: var(--md-code-hl-number-color); + --md-code-hl-punctuation-color: var(--md-code-hl-number-color); + --md-code-hl-comment-color: var(--md-default-bg-color--lightest); + --md-code-hl-generic-color: var(--md-code-hl-number-color); + --md-code-hl-variable-color: var(--md-code-hl-number-color); + + /* Typeset color shades */ + --md-typeset-color: var(--md-default-fg-color); + + /* Typeset `a` color shades */ + --md-typeset-a-color: var(--md-primary-fg-color); + + /* Typeset `mark` color shades */ + --md-typeset-mark-color: hsla(#{hex2hsl($clr-yellow-a200)}, 0.5); + + /* Typeset `del` and `ins` color shades */ + --md-typeset-del-color: hsla(6, 90%, 60%, 0.15); + --md-typeset-ins-color: hsla(150, 90%, 44%, 0.15); + + /* Typeset `kbd` color shades */ + --md-typeset-kbd-color: hsla(0, 0%, 98%, 1); + --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1); + --md-typeset-kbd-border-color: hsla(0, 0%, 72%, 1); + + /* Typeset `table` color shades */ + --md-typeset-table-color: hsla(0, 0%, 0%, 0.12); + + /* Admonition color shades * + --md-admonition-fg-color: var(--md-default-fg-color); + --md-admonition-bg-color: var(--md-default-bg-color); + + /* Footer color shades * + --md-footer-fg-color: hsla(0, 0%, 100%, 1); + --md-footer-fg-color--light: hsla(0, 0%, 100%, 0.7); + --md-footer-fg-color--lighter: hsla(0, 0%, 100%, 0.3); + --md-footer-bg-color: hsla(0, 0%, 0%, 0.87); + --md-footer-bg-color--dark: hsla(0, 0%, 0%, 0.32); + + /* Shadow depth 1 * + --md-shadow-z1: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.05), + 0 0 .06125rem hsla(0, 0%, 0%, 0.1); + + /* Shadow depth 2 * + --md-shadow-z2: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.1), + 0 0 .06125rem hsla(0, 0%, 0%, 0.25); + + /* Shadow depth 3 * + --md-shadow-z3: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.2), + 0 0 .06125rem hsla(0, 0%, 0%, 0.35); */ +} + +[data-md-color-scheme="mirage"] .md-header { + color: var(--md-default-fg-color); + background-color: var(--md-primary-bg-color); +} + +[data-md-color-scheme="mirage-light"] { + /* Default color shades */ + --md-default-fg-color: #1d2433; + --md-default-fg-color--light: hsl(221, 28%, 26%); + --md-default-fg-color--lighter: hsl(221, 28%, 36%); + --md-default-fg-color--lightest: hsl(221, 28%, 46%); + --md-default-bg-color: #fff; + --md-default-bg-color--light: var(--md-default-bg-color); + --md-default-bg-color--lighter: var(--md-default-bg-color); + --md-default-bg-color--lightest: var(--md-default-bg-color); + + /* Primary color shades */ + --md-primary-fg-color: #ffae57; + --md-primary-fg-color--light: #ffd580; + --md-primary-fg-color--dark: hsl(31, 90%, 60%); + --md-primary-bg-color: #2f3b54; + --md-primary-bg-color--light: hsl(221, 28%, 33%); + + /* Accent color shades */ + --md-accent-bg-color: #171c28; + --md-accent-bg-color--light: hsl(222, 27%, 20%); + --md-accent-fg-color: #ffd580; + --md-accent-fg-color--transparent: #ffd58033; + + /* Misc */ + --md-footer-fg-color: var(--md-accent-fg-color); + --md-footer-bg-color: var(--md-primary-bg-color); + /* --md-footer-bg-color--dark: var(--md-default-bg-color); */ + --md-typeset-a-color: var(--md-primary-fg-color--dark); + + /* Code color shades */ + --md-code-fg-color: var(--md-default-bg-color); + --md-code-bg-color: var(--md-primary-bg-color); + + /* Code highlighting color shades */ + --md-code-hl-color: #bae67e99; + --md-code-hl-number-color: #ffd580; + --md-code-hl-special-color: #ef6b73; + --md-code-hl-function-color: #5ccfe6; + --md-code-hl-constant-color: #c3a6ff; + --md-code-hl-keyword-color: #ef6b73; + --md-code-hl-string-color: #bae67e; + --md-code-hl-name-color: var(--md-default-bg-color); + --md-code-hl-operator-color: var(--md-code-hl-number-color); + --md-code-hl-punctuation-color: var(--md-code-hl-number-color); + --md-code-hl-comment-color: var(--md-default-fg-color--lightest); + --md-code-hl-generic-color: var(--md-code-hl-number-color); + --md-code-hl-variable-color: var(--md-code-hl-number-color); + + /* Typeset color shades */ + --md-typeset-color: var(--md-default-fg-color); + + /* Typeset `a` color shades */ + --md-typeset-a-color: var(--md-primary-fg-color); + + /* Typeset `mark` color shades */ + --md-typeset-mark-color: hsla(#{hex2hsl($clr-yellow-a200)}, 0.5); + + /* Typeset `del` and `ins` color shades */ + --md-typeset-del-color: hsla(6, 90%, 60%, 0.15); + --md-typeset-ins-color: hsla(150, 90%, 44%, 0.15); + + /* Typeset `kbd` color shades */ + --md-typeset-kbd-color: hsla(0, 0%, 98%, 1); + --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1); + --md-typeset-kbd-border-color: hsla(0, 0%, 72%, 1); + + /* Typeset `table` color shades */ + --md-typeset-table-color: hsla(0, 0%, 0%, 0.12); + + /* Admonition color shades * + --md-admonition-fg-color: var(--md-default-fg-color); + --md-admonition-bg-color: var(--md-default-bg-color); + + /* Footer color shades * + --md-footer-fg-color: hsla(0, 0%, 100%, 1); + --md-footer-fg-color--light: hsla(0, 0%, 100%, 0.7); + --md-footer-fg-color--lighter: hsla(0, 0%, 100%, 0.3); + --md-footer-bg-color: hsla(0, 0%, 0%, 0.87); + --md-footer-bg-color--dark: hsla(0, 0%, 0%, 0.32); + + /* Shadow depth 1 * + --md-shadow-z1: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.05), + 0 0 .06125rem hsla(0, 0%, 0%, 0.1); + + /* Shadow depth 2 * + --md-shadow-z2: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.1), + 0 0 .06125rem hsla(0, 0%, 0%, 0.25); + + /* Shadow depth 3 * + --md-shadow-z3: + 0 .25rem .66rem hsla(0, 0%, 0%, 0.2), + 0 0 .06125rem hsla(0, 0%, 0%, 0.35); */ +} +[data-md-color-scheme="mirage-light"] .md-typeset a:focus, +.md-typeset a:hover { + color: var(--md-primary-fg-color); +} + +[data-md-color-scheme="mirage-light"] .md-header { + color: var(--md-default-bg-color); + background-color: var(--md-primary-bg-color); +} + +[data-md-color-scheme="mirage-light"] .highlight span.filename { + color: var(--md-default-bg-color); +} diff --git a/src/server/app/web/public/images/1x/starlite-banner.png b/src/server/app/web/public/images/1x/starlite-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe15750b3745e7d416923ea3998f1742d4984fc GIT binary patch literal 34345 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%0A|_9e_RY?YHZVGla5JU~G=rK<(>o)m>iR?2;C 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 literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/1x/starlite-favicon.png b/src/server/app/web/public/images/1x/starlite-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..47ea40db6a5cd41cd6a198619a5e0c111be4ef6d GIT binary patch literal 1362 zcmV-Y1+DstP)!>~CX6H+Gc3?V30*K%S-8-AXXZTb zym>$O-MNGD+YIyOzWdI1?|1(0V?%uVckk#E#>S6j`rx5XEAv<*@YBAy_SoY`cG!BX zMFM-{)ZW?{IHWW2Sp ztRBL5+$UIAEYPLDp86WnUb_F-58G*MXcxtr>gm+wdA=_Qo)S`#$v)z^J@)G^*7EVg z-?GNfW^;j(=yC-Cuj~t>u~W$4G9G#2C-ZP3=XE+Vy*Fn;P>f8ZE6qaRR9;eOqGqXTUMV!SjbRH|Lv z)#AYE8P3Woj{bJvA;u&|gBQU%0k`o|F{1EN9T~+P)C4^iM8yJ~!dI=PQHV$|L3Al|%;RPe)SWxYjvNsl;>xd?5 z_l0aO*Kt2~3OF;^9olgj6M&f^F8vIAIccWtA7hh$X8h4dgnCO*-wf1 z(zERc>q-F9>q}H-fzCQaCE=!uBl1JT1~ UN+0nE7ytkO07*qoM6N<$g7eOZ5C8xG literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/1x/starlite-icon.png b/src/server/app/web/public/images/1x/starlite-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ff34e089f0db6e910f73a2cb40bcee6a2a6dec76 GIT binary patch literal 21005 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%0Do3A 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 BH%$Nl literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/1x/starlite-logo-round.png b/src/server/app/web/public/images/1x/starlite-logo-round.png new file mode 100644 index 0000000000000000000000000000000000000000..5e900ecce481404549866c73719dd2a59e884d12 GIT binary patch literal 25838 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�nTl(A#Z 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 F{|~>-CbR$m literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/2x/starlite-favicon@2x.png b/src/server/app/web/public/images/2x/starlite-favicon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..11ecf5ac12700e6448cd6401d3aaf09a9b9a2a7f GIT binary patch literal 2403 zcmV-p37qzcP)m;y_QzV$sbp3Kb7 z?)>b#v%lsf+qbv(zM1#F_cQCa+CKc`U$KbF@b;qVtHpvNV14^?@xkh44DMtW3yy%= z(aj9*;tg055Nm~gySqa?fB9NGnw*Yu{W4%jKu_07(Z7FP@aryrcS&~L`uMZp*Y*L+ z9njmoCipdB{P&hE5f`sM41R4Nup|J6!cGVUxU_G+=n(%*zZQ2UrmFsW^T3XPsh6*_ z*O0ql@W96Gb)^0z*fm3e9RajLd$+tF0vGUwhnfi(d>Zir+jVQie=>KEJz@Nq*VI|&>EuxN%- z#Ln*GyMSaT;qJr~tL#?>djfj56qlnUI|6v z%4FFIaLj&X7zu!iIM%m5d#xIKx4X$vS#}b*248}a0BB~coUz)DD8;cNaB)Mb>?Cl^ zeq~r)5Pavc+8uG`$R=^&#MVkXNqLJvm7N5R*{_V;7yuFu|8y%0Y$HRTibMN9N_v9? zn;KGOCxL7BE5j)W6A4&hhrU`T#?E{ev|Q{0EC5qHQe`KBYxXO{Sp^XZqLHEga$;-t z#bX5NyA#i~Ki9b-o$MrV55S_R43$X$_H1vk0e37oTE8HMuz zl?1q@AHUz21?dpwV;gpESu=0PAs(r+lfXIql~F1YQ%MjFAN||uZJAMG<__eB@ELu( z+pYH)6Zm}WeB>TJD4hxGNB|I|M^0~x7Np4yAxYH9P7yKth1!C_vD?Rg-jyYYzH#Oq zpEuJggA0;DK^ig;c|=HG3^xQ+9bO8^~sK;PK=u(LZ!Ecy8gn0|+qezN4c?60m&{q|aV{ zknISYfgU|A@3M+yzi=&xDR?z49N^UX`{LBOd!_HmhF}B;2ND3346xGrhi*kll=4=n ztI4%66X3$IC{h*iq8?Go3(PX)Acq_RGPWr0He5w#iHtl}kj+E%Gh#(Z z5Dl3J83`Aa3NFGR7Lpv&D@sBt6p_ZUknEHsClXQy**we(!YHJ*tzOFN5L;-(P+mTm zN5GZ(U!t>Ph3M%*qhpn^)Z2`}s*ja>_`vFduoFpM12*5Cp796Y##+ z(li+XsaHN8OVfAqMr%w*hd}ML%rEr(V!9l>w4_ z`mSnY2ktZVDNhrE5MVPtM*Uz2T~*NJe()aM-=i#G3bboA(;OfhJMN0+yg+SW6N~8& zZvsrl$Et@fwv_|W56}TS#RTgv&|Gh-QIa^T1aSmqWam{YBQF9>#)tpzJ@99a%g{Gt zU?^JwY|NthZCW3ss%P3b1m)5Mn2b;IGOvoL^ZzulmIsq0?N;J|3M>dHFgZA*Tv65I z7erYCu+miHL$k~BG7maqLFKqqFOis;WM-aAq0xDH7vW@QRm!L^0W{+&18$@D;5FwV zR|G#*e#%K#9zc@Gy_w>QjEsbV(RmG(s>&6G2v7%XsZLY$)S%A&$VrzAOgVuqvz9>$ ziB#2WP~Mz8C_59N8lU84nORF!gX@y6JRrvC|syiDH#*TGK4cT25|atV-)kH7_a=`&Zax*t>02iTCc2HriC=i?>Ca}<;@=^q4>r)evDNenZ zDI_oRAlGd2k}enMB&m<#O}g@+lcX+E)COD= z!5K;`cDX`3mV!sJoH~Cm_-PW^HMk~SF2J?qhxSo}#&_Xh*P9-n77E%OfDevwl!yF( zk)+E7I!RhK4yb?~V$K#Nn+w7=CW&}#cs%&^Rb|Gt39lj<0VF?>bj5l|hb&3e1`Ssv zBY?DdtjE3xMUv_oG#rt12SD1zJo2MTQeQQc0!avfKZY_1AvCCzKla6l3Q@Fd(+&t;G$sY`>VY9t{5fj8xx{zYkWf_ofj$$#jKU`&$KwLw!A zTJ}F`*BXs`E(2I5v@8KMOUnJUe#;Vom_r#i=Uvd!|J0xIj!=cU7-(q%AW2bs;+&AR zGy$S9MaNl+wmbn@J^#hb!aF0z36P{*<3RFfMN|PuQm#9ovd7gdVipU+1+j$?;y)^P V02I^nr6d3V002ovPDHLkV1n3WRpI~u literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/2x/starlite-icon@2x.png b/src/server/app/web/public/images/2x/starlite-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4b3693bb19549d2d1cd511c7e894a8a39289d9 GIT binary patch literal 49733 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 literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/2x/starlite-logo-round@2x.png b/src/server/app/web/public/images/2x/starlite-logo-round@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..357ccbddc36b1df28572e25f9264b698f64c9d07 GIT binary patch literal 58585 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

c)x%L+JYMAdsrM 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 a_Dka@R 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 literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/4x/starlite-banner@4x.png b/src/server/app/web/public/images/4x/starlite-banner@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..d702affdcfb51d4929389bc3819a80abe3dc359b GIT binary patch literal 193018 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

n_G`&L6hv zU&Wk9UK4yN;Su()5-k!7O7y_{Ffb|deR!fuDE?y1{My~=F%*k(XuxDWChKZM3JR;0 zj@k1OamV50ivm+0A62lqabrq)Jqa7q(xUIc|GISWb`#=nlBT}p|Rr5fOS%yLV*zAmO?t{%%~!UP+?I8f+{98dd{{83feIkn&< z$@QjbfE3Afz|QC8s%@J{yXm5|jNz^QUE1CA6aB3&u^c8m{P}+>b8{rlTF7#lOgNthvXvk!%V{JteVmZ^_%eYwBwU0^~| zXnb-D$~G?Qv-_nQp}kPX&?ENBTmUlNL)!V9&`1v(y(IsF!4VrWcF=dWp5km-6_9HuYb|)QiQiw_Z_KB?!f&S zll?7a>}i?HZr7qt{!F8BVaGw zQ0FQy!qxSXM8XN5xyT;RZ}V1GPa`+FfxK3kRtmd|mw=7+AsZOe^_RufvJG=z zcYIZz*55cbW@@G@X6tXB^1yXzxb?l?^sy9sCf?9DkAt?p3P-E*eh4{HwE94^adLFf1oPuX+Q6JA@fRSqy-{zgR3eh>qG27?YvolVo9O9Q(*aGp?SoEuegG{ z2|(WEweHtx`($5Ke6r&Ah{$*TmBMFkKAJjP>Pzi>%_r5-#XV^lEM0PT{B>sLqF%Z( zxxH4lK>VZacAWukWk*9f0i&o(Cjc_j3{|f;&rKRVjgTb`Vx(vp%p5LffF+)J+29XL ztZ6rI;l>cgrtpjW_40zFT7`0Ph2h=zQ!7qCZ0sqC*%8rbvRgMYY7$o+KAhirdA3Ph zsm#tqS^U^B0fx&OP0gL&2W6&?SF(^=f@OAly0%4eiVv`Ze#86&$whY#`Sf^-E1 zktV%^3Ib9@KzdWU^xh$;1JV(ZCQU>@dJ{qqDn)AOy$1-Pg-(EwyeH1g^ZyNRzBt!4 zUk>NqXYaMvUT2>YUio+!^5#ta22^=0598NQJH8B1&=o&{0fmycN=a9Fq zm$@v!PhL@xN;QYfD}oSJ&+M{6h)QCx>p7fxoJZ~ASb7zrT2^fEr5YK{boh2W!KVHM z$*(<{a9B+&2cS5n>BOFKb)!TfMgr>%+Slym5z>2M%EfhjGh14hoYso`VH!mbKWasf zl%UbdM&CxY^`WF+P|GW;TKpQLJ|j^GSW(nrm03W>h(3C)&}hWESVwsFf9h$n?rHA1 zQ26{jY3cjIQ0z=kTD+1G*Go*~=+P=HnhN2v#To*GA8xU4fN2iSn6U+{M{6^3;8xaxf8TO+_cI7ork8cjQHP-X*J2a>*pLU+< zQ382MkH4Al@mV-w{irCkr!l6-X`X`;BSpvWkzYCd;R|FWcrNsNMdjNC2?-mHwbvA9Kel=}`9&w{FpqNZ|az3|+c>4y^zPi2Hs&AiKyQg9zv zIB%kbKm=Ef3@%GE&&*yFEhz-q3B5@guiXfpI#8gFP=ix#hk9oR>4BXfZXLCwQJ!XD zIrG-fh#3Twp=IjODa)Xx_{iSck(XFYTtCZ9)CKpfvbkU;y*e{6OOyGCR#ii%pG&nC z!4E;3ZBe+IOq4a~)QXxqK$EwZqj&NR_>Wb1%2ai;2f!0{5eKvN+&2)xlDyT=w zB{;f&xk^x(`&Re`Io{VNQ1?8i2*$YCp*e$F-7{{+df#49YL1tX7yAvA(r2(t(v(bU z*LCgW&)!R$uzsTWL3wXx-w$Aay1xNt-TKIv&}HZ2+*PTHNc-ieWptizA+ais!o3{g zc>g;a0yMAR0EpSy4@if@*m%;rXGNa4v=k(itwb>uj|@%D95z%5e@UJmReg_9!{C?a z8jWPtKrmjlZ58CWv=K$Hd(r)6s%^31)R6^>+#B1m{%x4?Gz?ay@2kz~u6uJ6+FmYO zdj%9jz|-o@&pLlO!2=Rm|H7^Cv9GbokF9{CSp0Ut>DEiB0ARSKYlTTzQ+0JJ)i271 zQ0dRr1=~se_RVN(wh+8=^F!q8XDTA%lrFfb4wTfl(Jdyv$;2@|&dXIV=eoOE4L|h7 zuCYZIIexoL(z*o$A9eIEk|u>#X)T=7^G}(SP1O7KnDHI2Oa4UO2r#PQh>xWe5xw|n zXJsG9w^2Am@7V?Toh~z6uYN!vo!~AImC6>}FR)Pn9+n|rzhlunm^W;w2=eg@F|$qk z!0*-6F$M$4h*5F9(4pkkT3_1eM{RrUM?BBL*}F9{It9gUx#u8-o3VO$L$xhL8Ox$* zASwaZYLaiJYYxjOHq3pZ5DDNo*}4l4u^>)mznTc_Mo04{l<@H6J`EkMsaVmUnSrxk zW?8dq*gIWCwCynHsiUN+bFW3bdH?kSG`ZdY45t<<@)_esnLQS|LlBw&0gtJcnekl( zE*~*B2~f>u)(cHp%8Dgt94u@;mvXR^4V^D>%)T;WHi0|Hx+30k&1rGoxw&gd^)0TB zux+$UJ%I$sP=EVoBcW-i?a|I@;-yFIjY7V3w3OH-ClM zmni<{Xh9(N-Sk_7Z$Wh4@7Z14+GRTdpu~2*jZ$tV;vec(6VjQ;`XntfDWwx?XjivA zqY#oqW+=d5--$Do_cJP(SW0{ z;`iub|5GkHTK-ac(O(dTFHUoNqY{J_9#I(pJ%1L+OqJFQ-D)s#S}yYaYv$PBi3mN^ zDo;O?cf$~%&u{hA1iy{d3A2e1?aqVeRjxQpNGuzr8_#ul6#${|b?#+>6KfmAGgSij z0HbdgV;bQA#NtT+2lR#5z#O}kvI}-Gb{onfEy~c=gRqhaoKjQQWexM`6udM(1fsjr znBSwwrLQ4H^@;qYR7ab$_oOkHv|~qVM@j-CfS_#a$Mgav9|7#SLsP)KSjOiR8DN-l z>*{HLoCOePgAzR1@Lo`Yz~#j+o2CVA1cRYvrQ3Mj7|1xeodg?Mkz0fa*nw=lw01p1 zT9bB*)JG~Vb-S^dxu$dxT)I$tO~0l1t)pU2iY&H6C$>KzDA#e_G{bE=7)^^Au3)72 z!<$&Oo5sj!xZ#Z5)LSCgGj`)kkcEzd+$C@^YIv%ODSp-WS}nk&;QKE6F`kNm=Z6~9 z;0|$75_Tq`NbO$iwVY?+*QFT1`TP9s=}aX|Z_TBCb4#_A(}X45?B$)fG8%_vqnw}Q z(LHTcd^3!Ee)uT%@OqvhtoNdLER33@OU^}iXMG?#x*CeA9VIB{&W|3Bu_rx!R_sAa z8jqa1!HI{tZM1Cf&Hn5uId?ll?ef;s4EH@2O^%#Z}))hYupL$oG2 z9Y_j}%?tA8`z~dpnr)tdR>Zj+Etw*S`xaYKQ=|G;3YUqUAym2+Q zi)-B&pSt9?#eRU%XVEQAn4i^pv(?|1x0LiO9FlWyX;Fnd<)NQZ1lT(Tb@Wt9E=>Uv z2g>-vLdVg`1ba2>+h_Cu*>J-?HC-*DJ++0^Y{d0NgZ15sXXOR@p}29_bK!@IinpnU zSeHPl17Ki1*AG3lTyOHWX_8zt+9M=7wVECQcUepzl_4m+F?+91Un1A+{DR$VP4O_& z*uD`m+a}`CwolHqcwu%VU7BUaw=(QuY$C7D!yxi+9{70T;ZdVf8cC^O%CK9mPp}7? z(9()|AhC`%9`zpO=$|{a%BPaVRrU_!k`i-4N+YJf7!BeHi&8SLbF&)OpR5 z4^jSV_ov}uLPfI0sMq@+yP?*Wjr>t>d6-F30iS0 z^28G!`&%ffJo8eUlct5R!Wlfz8Wo}lN!N598b2!<8;LfH9#lZFDnlUl#;PahSKD2@O zy{F=M@_wIyTN@x59qy3J706rz#4~DAP(|yG{MzI-4V#jcxv8{Z?;}`M^HF7E@F_wO zq?5}Gxv!$PzXcagqnz**`Yx{%3M6VR4hH&fN1-$k1T|_;1x}q2q1K#W7@%*KBDrK5R1*?dM46UPnnHZ z&8nQ2;q}-X(>qQ^oU%FD*$|_=%XUhXO@$u9rjUEXH0Ff#N*Jz)OIHP)Ew4Z^jf0m{ zI<=lTG3S7O_cuiCIE-ZtB4skQPe0L$+8u{m+6_@0|7a}6HXsf}T$fHqZPbSlh>h($ z)WXUaC=GR#aca~9N1r^3Jkr&vJ%@L(jlm;=DV?9cAk%wZU6MZO&=c?1iP}v{5Us^7 z&%KXgY!B?};pv8Y(V^7=J&os@A<_QId25K?+ZzXZRE&Jv+8?P{QFtuZ9=7>8>m^l`|&|3Z*q;e}l+AbcnC>=M3bZ4_0 zRwc;28&W<{I<6{y*)4oZIBp`#6+3%h>u5!8wT19?YEAXFrm#W4*P`O#%HbNI%4-iG zVLkBoV@5Q$nFx_`mN5;^E{|g*B_(KQ4qrqlLIxTc|4vKb^w<%DaT)J7!e<+VVM+^s zqfVZHi~}XoR6VWG-|-#bX=Tlxwb9|<{ z1MVseOd5fSi<^lMee*dT7YMOwZk`b>T zK!;Y+4@vj-`I7V9L^80_=ZvF@u(Yw8k();AbcbhsPj*^e&0WuypMEs75Y=KMo|f;q z=a7=JsW$1tm(n7t?@g9=!`doGWeC*>)YFMGOcZFPtppT+igFvI&qc{Ra9M>5LvhmvCqVs3K;A8-Y@c+(-R-m z7Uevb{NTd&8%=kfKXA5tU0le$2?`&&BA&mh?{Gr&I_@Qm5|w9*k=chg@vR(w1-?q* z5SgR(xsT=_l9f?%WF!g700MxnS)Vbz&FH>eRk5TQGACd0u;b0tqTikW9xKT2)?qJo zGvVuFvM1!}0emu*PY0d?G}%gsBgw<9gWi5+~%PF9y7H1>D9@LS`>hExX} zpEyoa(etY~1*1hlLQIB?LlmH8U(s#Lt}vkWj*+wI{pTtULQwSz`2)7QC#)wGt-yQS6Ll zY01&3v370U4wI}o=yj^lmjaq|^hD@UTTZSZ)AnX3n`q0;3TIDu-o~AuG!$RDyN5Wo zMesVF=GPKEnNj&!Y=L`J2ZP^&-DQ~kZA<;t?8rFJhUpt%#ncBw~ zr(g_*7a6a2jat009wMbFp?Fj#^lT=~LHL(;dfzRJoKX)ivyddCcJjAvs;&IoE z{U>s~QnId0z?G1`Crt67*b@D5zesmS+%)l)G|Sr_VT8ZIP3NMca|SX(v+G_Qav*#(yNVcsl} z*HXeF{81og`B{#6;OJbUqAL@emls9**nei!5Xc7htt+;TkmuA9WdK5Vg{Zt5kegwQ z3`=GY+vx5AytCLpM*`hw_UHG}pKp&kNk_mY247zi zm?UKxO#Qc2#Ua(#O#{A4&LAs!QCor{8l(C{LI39V_gQSh85}HCqdVC&Gm;WxQn6Lp zACn5DOm{$&PK053QWM4W?ZV%9+5YDz5Z(rt({ol$weBcF&I^Rq6pKlEfzIT!$`yC` z-aoC5<5Lm&Dftcwv0Vy4Hthd4Zrc|)oi_n<#tcd zFPsj}+A}tiuom#dX2;g55zx8`4=y=;yL@ct2(IZWjzwxurge+ajaMSmx9zNk`}Z&- z>0(;Z1|m_JZt)Z}PHNW8OO5$nqd)zITg^?UZ4^(zqx*5-YS|54PK({i5!fPwmfbgM zB$!#%x~2+rLDh$5d;sR0K;7>Wi}Xs{#!Q_^$u%9|{P4m>s(o9}w{7~nBU>&qpHgtkEZ)@AuOt;t~Qcm)dCF_ir%`|{dqhZmG4;xIa+4E1D*P}+QmIOk*riTXeLX+pl+tA}_2dV|S+)K6 z*sBpN>~pDIAE{^Jx!;)nEZ+!oH0~4iERc{uCNES7r>LrrjA`eIYPhEHu_z$5c*>`% znEha;u90^_+}BZLpU{^l<|*^$Bq_N6;o{zn23}_`;8dJpVqOf( zg?Bh^6!^;h+v@l>AAUMzE`nCayJV2>SLk{2CAZ+?U)~LXu9;vi*Q-)`)vgcoy`txl z#6pJD)*oxkWUF$}i=UCv%h`fIG>VA2=(Hr0k@DrfUKFbD?aAE5L;)tJy!1fJdd?+{ zxIT&Ig{4;3*1%^I*V6(h*VFX7?=S>E#6_v^4+m6mLaCP|D(ZZF`R0zhu(>kY7`aj6%}n9G05`Yf^Gg5@g#mCXGQgj>0@S8MDW{j{>uOIH z;IFq}wk%oIk`c)kD@e%^QHwfo9B==QEsILdFC)=f9CtHnD%@krbB>Z0fwl!4Kz3_J z|5+#m@|7si*;cX6LnXb0zsnm8E~)^F!Z4$=@`L<;AyKufaE90rFc_YPM6~#~Ax7n2 zpp4J2Rm;!;TRlgpma7GW>(X(^4Hoy~Oad9sT!PTR0d$Kt(yNJDF}OIu-4z zs3Q;Zi1O?!ORqS3n#*>&DVw?5Zk<23LiNGk18tHG7#k~5i~YN3vixUe8CdoG2Jb{! zh_F5|2E0z}%FnhL_?xpy4aQRGc0TycA}8FnaLaSjc5V!Ce_jvw1wh{ZM#xjf=cfRc z58x1yPV>32hSqJJ2b-B=KD<(i)HQc@Z_HbIR_UI)v{GuS7(KX;EuPZvz9rdWCRH!m z258S0)K4OT14F$T=JWM|C2=fQrr?6yAsht(Q z9CNG1&Cbpno;oqlCz@l}lq*!A{w}%+73~U&ivIi78_cs^1Mvmfzl(;XY?ny2ejG6H z$)P@4%XHtFsZsQq2ul4OR~Yi2eGKv2UAJ#!K6c)CpZT?jAk>qC*~|gq;G&Q~H;w ztG>B+DT|l9AS$*+E*^Q1m%Ch&H&#X-%Q$Y-%Y%3ktXLna3&=W#ExDj=TdmSppoz2DY|0ce#*ivTb!8Vw2t~ZswF! zvie6zNepAXeW)2gCEfh02H7Lgrcp#?=V!7SaLArJcbEUZV-eKuwyjYxQN}sga{%s} z;~S^)z^@3eJfa^wEG^5 zb+0PLV=~I}ex#Y(G+b=^j6AY9VgJAy$5xqP&f*Sgf@^Q#SQ=9r7osvd+u2;2)qzbh z0Y3`PRnIL3JBgILkR-tj1Ei?(?;{RmAQu9tT`yik&Xt?XoyPLj`W z7Pqtpi>^v$s?c&}mRuqhf|a@uda0cbz0R(^DuK|ye&eT_+aa@LcB~Q@#zy>V8CQf0Pd`gSL+tP?`AuMr)o*Uq4rClGIxx8wb})^v~z1X zC$^XhWGUsSKifqrfr-;?j~`wlHOd6v8S~Q_EIuXU1^EITJsaIjsBXu419t`Gz<@9& zk;8;J%+zmQHI=DIj(Y9#WdH{-=X`y)|K{*8rc&_LfkU;Tk*fAyD%u%96fvA;)r0T8 z-bX{Nj|2qcTz+jOum^&^zS(4%o62-W!SuM<+Dt{&;nH3@wbMzf8*K-oAm`n~IMUoz zsuX)+2H(V8Un1=UbyWl-e){7Vfopa_6XP(CC@jmhY)zugFB7zxgFkw9%r5);Z?y|9 zLY@nXm6mYL=mWD#Sx*bFUDmJb0$gP>)BdH`g3Q-)8RUL?<}{;lATjkz#a3o3lk{o! z*y$yOUH7wl8M8i~wr6jv%PkV%&y$w&8-?z;dFEWrSIejwTjEivMfm_b!6=Y%dQK(M zpvb~%g?LyPZ#L$?)wzRu7UZ;7TC;HT^xh{JgDvV<+4xbMZR z{)WzG#Wg*#rnoUbR+H+%vw}4ZStu)W0!!N68PUlZc+M7;GHSf(K44Nf1WX68KhO^W zo`!sr0iqpm*U5qNEprNbkKt3_{zi>x?Xb4lyy20EqUlV|f%V|f&^5nQjE^6qksME^@dq5aGTX;-i>8tuZU4R&{N3mCD+u5>zvlw{eG)$L1OF2?lmYM^ zfBmYX;}*gO=%WG>Yv%rCDO1yXz0Zjvk<_aDRtv#Z8WGWwV}O}bg#pV67ZCOJXWAoU z6uWvXBo@s1jBL@~Lvx7=29l5@qsAoYJD_K>2VU(v5gd}OvhxCVYM(CKcKk}46Vsx- z2)ZWzj0>=rYq_Q7aypB;^O^X1su2hjX{o`w^a82m06E8n?| znwyK@7xJIWG5s&bzTpQ@;H1T)WsW7 znh^2z7;2@$A0UgjU;-LN)4gl<@7=pEsH6d>-d$atp!PeMWH4T>-Jl;cd?HglELn8i z9HzxDE`06hPul6@ukvTq8D;hH9{bG4Se_R1hM@iGxKs5R3)OoBaxY=*R%R8uP=j3e48937+oi~{k|r9f=)>9rn+4JjQw ze|2F?BEUH9%|V%Hu!&O*^L)@RS=s6P(K#s^97)*(W=Z~ zCnN{Q-I0{&Xn&a7)-k0a!P6rKy%u4EiPTGKx6>KoqMlEb?W0n!PhH;uD*qL)wMqM( zNy9IrQ+ZUB6IF_ZXnUOh$L~vx9f5h<9t2>x;AWWs$3Jm3oy0&-d>4kAJ}`$;OtKp& zdTQRd7qB)%$V+KW{rHhrktBviRzLbI8R>s(0qz4hzl&GE%s{fl*G4FW;s+YrX$nrw zA+pST(v0N}FVYq>BA>1;BCwIt%p2_TG8SRvc`sSIG6(i%%{0D4dq?f>7MO2=G(I{W zah)lzxoul$3mMv9@`yVBQUHyYF7t$Zpd%(ERBY^-n?WRXs3hp)N(I`uHGUszQJ!mm z^(qvPSN;+o>L3Z+&bkkSB0g-;W(0nby(}eu1qfbi@}Dv_*D$Zn@3$aiH^WBj4yH%z zed0*_Z`Ia@FG7%S*&;d5iAniqGM>lvO(-Ipx8gwfR=z&?uV<$8YUO%0=KE^2R8vP~ zphG4j!7lusx(Rp>rQ}(-7_|5*q_B@zRsfz@oYmq|+WO45*2#aS8r2vY9i1>r+g`_H z8dX!}A$npk^TTvd6p}P=#4+9N{tJV1W+k>MbIe5yY8~PG$90C1;|2g$`I*Y!LmDQle{(hVq~7YA5E8l70>$}u8kx#+r&XXo9&e^sb_;SIoRf{8hjK>hS^Do0 zgRYXJXF*alhyuMj!I&{d$aCEUn;@eR-PL!*YgBz**7ukXiQS5G!8PZ3AFspRpZ$kK z2U$AA|GZf0S_C|^t!igvVS>_3{O-k9jSKqzuR3Kf8KN8(=z(7lP7_YNCiE5w1ty_Y z27*feVNxcMlI;IzIV#QsXLZdFSXj6yJYgHGnl|=ktc2B_MYf^ykUCFAp^2AT+^s+T zMyl)~_tGjr9gPIk{UfSgZ6u{YEB?x?GPoP@87>QqY}%5nQ?fbcwUev`_jeAv@ak=( z6l)Ri{bcpFrS25QOv^h=BM3s2DJOJta~~>YaQRH*$$p>f6=zpl+iXlu$T0@KMd2i& z0NHb%Z_dLi5`GfaJc1tW_jdxVm3c33wRLlPTiP*m2_G z%q)r)nn0&KF=iJfiX?9UHxmr3Vj{m`BIfqhr*`dtBZM2=lGsa;C(}$9PeZ>`ub0xq z>qS>NEr-eyPK=8h%BkBY-AwTlV_ROVwa}c}Hpb(h^;Q)YggNz@$Qj?-+WUrr#8xqK z>rG0EwH26VSH(mb{16zszXOf2`dPrqHUq*q6jYS*F3)qlN@(($jKi*6q~NjaHBi?& z%06+Q1P`z@oFu*uBA@3QBaQlCLW*xe5>iB;y6Bpe&>$GvZyFZM3XMl4&7S}Hsx2nt zE)?TGk9|BNSMj;%18^7d5snEZxD%?eNB#>dFbyuY4?#p z%qhG-59JyKLha#BJVKbrF{F+rosDV?Y->(@fSJgD@%si&q}0K$xt0-V4rAIG5n(@i z4$kucw-xXr4SQY9ePZQmGJQ`>f(0~(ZQ6I-%KANUfc+bqm%}Q|b#FH%V+RB2(v~F$&Z=dJZ1@{xZ-dwm*D7EqUh0k_HN}byY>Bm>HKRZI~ zB!m(!+#tq~5V)V$M8<}Py^e~O2RDd(PJTn`ZKdA?WutQ>5b9+=QF=Gy`^9xi76R8{ zWZIixJtl(B-b};GS>h#1(4~Su{xbS3{E6lAKVKSP2ci4nUr#y}j|}}N_i9a`IC#YJ zvOaFa6!!pJ=0u5StwcpPTL)tJh?th`lkrJg4{PKPG}ek({Qkat9ltf(lGtywy-6 zIAxxF{nNc0oh{1nClQbz9dmwWdegYIrF|npkkxzqrPVyAz)oSmKXF-q^-9S@h*|5C z%iq_R2&9FVK%5MM7JUtv2wr*qI65r@@Y}Qq7Mw+`<$-1Rlamp6`As;vdr^cQTm}w= zO6^e^T{6FEmT#cz1gaAd_ciTTaL*Ur6#9LRWbv}JtFVxB;(;!_mu0>+`a3x3S5#0+ zAIN`$q2RAQ4tVf(DixHvcmc%Nvyxt#HvE7yqonAB(T>6A2&#))IEs>HK7u{Jh==Hd zvzteI9jg{?E1^Bt7)k8y3hJY?@2&2&5DZD|bShi$$HT1`Wj{ua`4Czm&ejxCn_<{v zDCQ{+M%Y~48X+8+MleZMjhPQ}rzuiM@3v!8pgZ>&u|G-_09?^)@byR)m$X6gepiOZ zN%f}clx&2W;ujIE3{LfQSy@HL6mjo(oOX-U!d*gP7fS`@Z)bY3WB*IKW5Y^ZMQFH~v5aT&uN4$Q#w^>^uco>?-`2Vms<1Yfb9=$;WL@~A)5#wtZg^__=WEvUtSessvYx=#kaWl&hH% z8;Say{Q zChm^+i0y*a5j%QYXLlK5SIz|6XR*IyA2dTKk)fFoUAWFLHmMuNQ5g!Vj3T&s=TrXA zt(_D0K%`XB7URh$Hjd&1^LVb7t%#9%3Trh6n)go9y$#SgMI8iObQYO(N4&&Zf z)w<&hZm#TfdrYkwRMQg<4)}z>tCoAPU57!P;^f1vixs*MkErWd#|^MG+7a3XtP(o9 zOg0UauBszuLAM&ffM7y{+}1Gx+vmNUsh;rD{;4{r-n;3wRQ%_F@N1JW(H0Kf2$Ja# zxCOyoo= zhwNoJ^O`5nXJnqf10vkAjT|BIZ3xFe-;#q0*<)QG+dyEbj{#nd(6>wMe+x@{fVGsK z0YaTF^O{NHMdJawGLPeqs9pb2aIs+Qm2%Tpg&AKDZhQ({^mS9aNo6gsKTe`tL=gNhxz2hp7@w!*SOa%=*lHQ zzY!6|URO^M)&_l-07ORvTnW)m{ZRGzGa2WCH=qNI@MS)Hlk$Erf?#_{Zu9msUg0om zu9w?$ZIu0-Hv_un2zrw7Hmk%*ORI-s_GkSo+r_IAzuuy#C-rMh@w5b7M)Usq#2Tl! zI+LgR>xn`f`%=i+8kM?^~13!g0zt43Uh)}kAGK{|28 zW9Sk_0LV1jHsp*3GKH}|SBaHuFcAc+0PJ^L;Sn_%=sL4IgKG=kcRoKeggBVxP=kaZ zx7AgE?7St~>@yS~kIx8&CFMDc=?i>6n_V8aXjH>D=P2V21+<&sI zcq6%e+K?(@VOY(I@vL^T#V0ZimHCr5iFHrro=u&}esBN%#@cHG!>X@qJSrFde7yWe zL!}AZ^5jw4Ws%nUuR|zzS%mnEdc1OA>=Rj(cz{XmoPQl+=n=DI#=9(3tFdtoxzNWd zkAbUox(_obR8$%QA{Qc+yo;3Z{f8&G%Ez(IEcHwSXK*nTM*$2v12&UTLWb5h{KPVh zjwN_q%?+BUb7|;WHJaV{ zF<0u3jvz$%uR~A5?I#S>y;=0-q-Lk9Uovc-H=!cEFz+X7v`SK{t=8?!$rtl0Il*fz z1ls!c>KV_ulUu|O3Pc@0&@l{(p(I>w{(h=ZNvtJT^i=a-W>9c+?7O*+p`SN`BhC){S#7EzNYlW$N7U1 zDb{TZcBYrw!>^J?=R%L-etENc*z<9Bop`%uT9hf7NflL>o?~P=eyA6n&O))^LU)0_ z0sXlV&#(=}fgM!i@U0Mi&Jaan`)QT|5ioU#!s8#%(b17Nd)~sIZ}L3b`T9-o1J6=* zl8n|pfl_B!$Uzv%kBettEMZ#JCZO1#1lpv728isOFn)mNJeSLX6hOl}}+{J`O zn9|vM!3X*zl9VL>sD$Nj%&tPP)LU=}9UTq2J}Dexb)VF>ZkqYM?&ZC9>@JQ?RwS=r z|DM8o*qy!lZ_OTu7n2WlJ5#?W7(+Sg-lTt24yajf%F~#UaY7-NYr2pb;-cxn3~E=Q zSCSc0W)Mq!lG9Xc;m+I(zt`+>LTsi{mx<9)kBrq%|8N|SJghq62=@+AsshH8&53vO(DY* zHOLfu`HTspV~~rv`vdZGtkPLNlVBM~I)fz5%E)^T7YX9~Dlf74gImlKzq)>0>&ve^ z`=bAo+qD>{Qmc9}9c_=UB#dOTuu9~5+h5(4F)l^tn|ytl+K$)f>uDAPbef*{O7Bm) zsaNd%9d8f{4K*+^!PeVKd<%Y~SG{kg@s>bu##V>Pa!P!y^i;ol2Rvifq@n!2GMTi0 z&j)Hhm_3E+g7hr6&~7f5=KHmdjW>2mosXp1M!ulGK{M)h0GzKDq|jktP+=OW_uN~< zvD~nqHf0Ui-08e@J@`QA%-09wZ`ju-d>cIuv6kcw`}s<;OE6A@1^GM@EXADc*;n{S zxKBiUde2x&;mfTFk@E`*u8{ltFE4HGVF+nBn7LEO{)kCJdHDsy|4?rTtRDu^xV%P&R-!hiO+N{W9cHdC&5AE~C8qWbaV2 z7qi03x7*#JA^R7`sMp*z%K zeG>nzT2V>1{;}92W}yQ<^CmJr5$ch^@4-QF2jQe#xpqR(5$Cp=!!frq&mb-`PW&DsVfwPmLb?FhMJ%VRq}75(HG0{*|cG~|NR2AJi=asdohAt|Gq zxxP$`Zu~%Y+42T|+y`BXy~jVdZgSAjP?zPiI*oj*Zq85cIv!xLT&&c3Psj~hlm05> z_4ci?@j`pmV-B(qb)hu+N~nm!WI+1l@Z{HDgV~2C_BLS5@#BHSeB~$xEfJelq0_5)RFnWe)Gfs`({BbE+}b;UNklX(cKg3ZsLABG`sBEXpF?7 z{Dj49PFbkc=AuVBYs^L7rW9eQZhrqLN|*RD#G)B`trF{8w*<$P(u? z(y-xCZuBPu*o@Xvfp`_xgx2jW6JGOjJ$nuQ$1h zi`&0a6SJy-WAI#XAC0a5;BlK0?tz6PGoo`74Do+o{8UNA$H%CmDf;J0PfhoA-^kU* zTkkLR`sg5Gi(CWvN)!ukEF8b0sUC9nhTBBda3=y{yqBVUDLI`Jx>fuwOG znlmxFi0NbNhZNqj(L?~C3x8@qU0tqDh;@l~Jq4{^L`>=k0!zF=vizEdhylWWKubM}tBI|K2Quzad+ zo>-iClF`X4mEq($JNPwHo#84@U@+DVxnI(ZO*)9--%nR^-Jh1FH9?-}_3!r5CeVrI z7>V_Xa2oFKB~dk`raew;+w*(+p~R?H*w8#6*-h=@je~T*{g;P_2u~Fu+v&s0_mUML z9t5!U)1g%9f)8(%|M)Y66!QEkImyQ4mKutb$JTbZ!r}i;2Jydw;)$ru(w~K(6r zLU{i;HoY^iWMMCoCY$n0?!G6u`W8Bwb0;(zZueFb-lD zCk~Gye_>fRPTX$pyjD6Wxf83MeRwYN*1@>1b+)5ZqS11SVi!Ndu2eB)QyI5Bw_4c| zNi1$RJ;s-(u1teZc` zI0FgF+$H6i#=d0{!#JV+jQ{(mKt$%A_(4jQZp=d$xgI5O^FP0#FC=`sf9$3}>@O@o zMLM$ws}jB3YcZEXfN<(l{+x$;CjPu0*r281}6AYP;cwVe_JbJMT#O zwDoHHgQmb%ck*3cPyBekVC+3u=e_82{@|tgs4W|R^WI$WL`XF%Jz(6Ygo_!OddfGy z_5c)4?guzT?zy8!wS1P0k5#&EEe^>A^gH|i3cGPL+c98tBKbma5?b;xyB5NUHf=pA z0q~4&LtQyxVzRy6T2Xr0EsIqvaRV2=|&GSCQI>Ari76b-!uxqH_qL6*(oMfjDmY&4<#JT5A>@Tvs@M7{K zV6eQDi}7f{pTOfnFi=F;pQoxv67iKAy&!A`#qV@WP1i1^>0a)jX(qe!fyyE7dotW7 z{E>7t@a=oo`KO@WBz>lauHC!4V)?3STA$;iO=Vu*;8wp~7G~;%WSdN$tTQU5ov*~u zs_9NwR$F+Q;<;3@V#?N5`C8sT*v@<%aqZOoa$-lsO!b?;%s{G|rSe5qOhbsr+lsie z3K4B0rLQglxs_>`69Um=rJ1-v!0jmH<>@2XPpw^n_>x+Pq0t9L9KuN`5|{%oW$Dn1 zjPLEgt9SjX-kM8#<(hKbhGa^?&uQuVVDADOy*goIlc~Q->&j%vjjO&HGFNoI%0gY; zFZt_Y=Ad6cWOfqVw7>hU_1NVL`V|6LIX$q2;A2^KHZr@h2Kn|l5$;Gn=rpQ>9=<+P zQwNhzT^5EoJ$p3L!9c*uq0ZTWzo5y2zIds2ND3e_iX+gY;=USI_)Zi*cfQ<#i{-CV zskZA8&l$)i1suX!D112JvBf7@ zLN?A_`;g5Bz~MEMurmHw3mR5OdXoB-AFi0Tcg3II9kfYARPN>U#QXLLy=JDZtCeT> zzp_-H7#^SZ)bZnPZQ|G4vyGsOZ!=h*!~<6CT;T1`=4N&yKw3kG=1*eWa94nDf(qa# zzw~?CJ)UqR0NVJ!UI1dWg-EWFG(83L@mBAW;p)N?N-jLXshi8D(LTz_5il7{UwYx= zstz+^PIj}j3Dkx)j!p=3@&38FHr=wOdUtf`GpKw%jn=cjYFzBv@MWXr6cXX@EozYCY9^P$*2D1^TS(C8U}BAmn%&OXPglr z^)I4iCwS)WZP|jQjot)EDnWpH;vD387C6{MRwT*t{?rF}eigL!pMSdFOc26(5nM^n z&6imSTs!LHi^5xcvR?QoRSBE;6EZ(-ra_UVM=wN1sZmq(Do~d;G3l`~8{#mMQ97~I zdlxDqvT|Z>ltD=sK>yh*utI@`8da%ug~&3;cV1cXLwG_o=P>p zh_8x2zc3G#$t20>iC|?*R_yHYR8?71OmqG0&_Cn0^s07``8-7B0wgd*1|@jOWI8_< zn_*`#p1b&Prf`ajUpPKZX?)qw3lGf{o|X-)efVOG`u6*T%Tp|XC-7TmII{*B=b@@i z(R-#3UW{{j&1RG3nV^w&=1ru3Z*GORJ=+ArdFy(t0wm~U_oRYIiZw=72{(*X>}R@;aIM)CrPFhAr@NJ7iQ937vBeb+D<{vnMUP z1qtFCl+sf>?Xh2=_Ua=IBB5XHTsVBIf~(^USHUq6Qc_eN`JFowH2Dw`Dx@^%ZaWyC z`GUY_ zg`ZRJ_x;+4^Q&DPJ^V}D9NwRDw9OWUDmF>;Jo_}OG0Lz5C(aQR5lTd4O`aeqsxoiS zZ$sMzrUc=o1prLFCAk|L1hV!0b@7+j0KUQrA5c5{KlG|)pj+_!_wx# zwSv3bp4}1uA6ai5R^{@&4{t(Hl#*^F6;P0r21)6XPC=x*b0Z)iQlfMjbc1v^NQbm^ zNh6*6ok!2-`%~ZfYkQ8@DhMV2IYbJeH=D>YK#Tby3XQvvz<0BE zQi}o#X{-Mw_lM`6Nib@54UMh&UXs((>{Tuy`)}V*QY{|YC})HVJcbYk&Ov{_dwP&UH|H< ziu-(2+f^bqwHU}u@DSj1!4EmFh_HgjBV&TwxN)8!!%i@uWbw}t3B6iREftK=va*o* zTuMu@+BHzTerm-8 zO4qy$QO?*@*9tDLqa%di0o=VbHkH-j@^LW|O7T=k`ICu~!j7ctbDM9ZSKCHhfx74Z zTGHfhk3+V;)?C9WjL^(+Yq10b!VGAUM?*V!ig53%s+J0^sRFo55(e{mv05>n_vfrZ zkhBDjSp>YYP&zKsAbp&!24_McCGr6418wNy@T-7VUTIJwD}#UT)}R-h>tFCd;W#v7 z_|pWbw;_cfV1sfZUd+3*J4%?W4{ad~+`^6{QZs_;i+U;_PGse~szd1Prgy378zFbS z&$-O}gWXoS7rN^S4>3tk1xxBw2#NO8(QqQH-zD?clbpDN>A{894)1S1{sOE+s(2iY z2LA7qD=jHuC7V-a-NA?nGZ)Fv`yV?y?b`i?ryg##1}c1!KeG(KRg|66IVBn(0BqTW z<_$_0;J;4-GJnMxNj1krs1j@;Yoc zcao7Z8t^+4^?%R1(GfC{P<=O(Vm#Qv{f2e~=UFDefySyK@t-$6JUc@$aCse5Uloo% z#dkY~eTYP)OvMwgxjNhbA`(Z;%ExGm5){HF8rC16YVABhfjd^j=K>H##Sev(+VC{A z;FL^P^6gl`UM;tj-mw8gCe*ltL9PIOehXAKd5?PAJl5{LIlt+sdDmhaW1XX^t;G)gJY%<8{)}77et-iez%U>>!=hvQiEDWGi9r+ zE)&WYrsFO|{Nn+`$jz9*`{aUjFCkBtm zpZROQcB6$g_8*W!EC0lPd{NjR?Qi?=gWeMrAOzQfiGD!xxA$xBEjW06piB5fzu(Lq zG65go2s~K8F}EiPY@{+h6*)G3U{3qhd3*l2lmlSq11^~##smh>gA&HzvGDn47mlp1mlJzpltO-z>#z{J zTLxHf9#ZHa#s+sx6lP@b{qlHKAbwNz{5@NkKoiAJ*c>kATUu+lVT|6l3ra=?AzDS8d*KC#hPdgO@a1eX zSmbG^z{fLG*eDA9Tck*wOewqrtPT)vu51i}6)1S}f^_4vy==T6Giv3h`SaOmySNQy zu=OXQ?TE_0ve{4eG~qB9V(MzLTZKTcJLVs=D1b;h$}D{?>aath@W_*UR}cs7u55C5 zzi472+&ttmOBMLMYIe>Z0|;r9KGkg=1q2ldnWJ-*XF|~OPifOZd6Nvl@;*4|ofHf` zo9>vwX8Y<5}yd6eLoDAi_>}sm2z4&J$bR{pTZ^Ni@Ab@QJrIvq;IglB_=Gem! z6chUQ=mUj>TF>aOc-UEnzP$&ewg zy;%18f``p->1on`2*+~4PMT>$w+wve`Z+%qLopHp&GiRnUbJMRj24zuH=*Fc_9Ag@lY0f49`=_c=qt=9CKv8$_FKH zB+(!Dgozf~C4=Ab_OCi|0mM|rfPOK@&)?AI0tj3Do0k7qbKQb&sJW=D&IIz@!1S(tk%A*g=bMQXGf+JJ+ztbjj$y;|5wAD@J*)YpMo znDK3D>S*Cw*@<5)lZid9t!twVfJ=ZboO6c^*iIA>YjU3=%zC1TfnD4!xAl#;{-?1{ zw~1m8Hix|6ODN4C@ypjK1lqHw?UjIH3%I4ND&3w+QB31npm|V`*Xnv?=X6r8||2SMgSE z=@)wHVpW>z>8D69Gey-(m1=2FVZ57{7{sLE z;BaB9cRThA^{)JLCP^SRhlJ+pgdE zD!0A_5AtD^w*Bq;L?j`khek-W+y%BQ7!kj@9ti5V1 zY?~>F?CtmFxrO__fPF{(E7F812GPkh9G9sVo<>#25%C$#ZEXr^ z#8rb%7HTe(Bz6T9Z_&EU^Kz=}luoVbl)IZfZ zCnf{;9sNqfe~~%JG~`%aqxpwcHh&yK@G}w@xRD}}U);C~lkCp^4*n!LA~6{ku;UnU z&)2LvzO?#`+ykrZSgTU`RL^<5hPO+HPDP1$ns>}Bqx)eQFa;wD zf7VReHeUqQT)2thc@{QT6nI#T9=#3onx@fGi)8*n*Xju(tgruaDoY?sXYjcR>wF!4 z6go6G*kyupqUm|wCL-4!&$07$Y3UsjEfPF%c%w2LPF{g@60INc!}))``#VrFbgdF} z^k~d4#!3HR_gwTPy}z;k^^wD;!4%*(d6820%*Bv}PU70VKsmbh-MxEQM<&<@HPw&4 zr;;jGli>%PlO}o>g%y}m`qX6(9*e&%%}&J-oV#31XBIZ7KMRCYwcHvQ<=;RJ02R@M zhiOZPBZq_IaY+7JX#gE8)Ovic2e>%$J#2fkYBeRs?osP4q|Th^-iG(z!w{{QYJfP| zYe?O^x<@u}`{`gApb)R0ah{BVT?WelgTp7v%TnaAV7t?;OP{@tZ4oIzRTflFRc(uC z5|NYi?2uSJ=}0vK5)j$$nm&8E!d1W`c~E3@Jgj^0pC_K906QO<@r(E(y2oKiZ7#zA z`0MoM=cH9#@OBT*i!qRDCw#+BfXdfnm7si`2+}YUn)!7Yb`t4(z#aJ{-kaqe6HI1HbO&YQx?Sk)7cD^^un(Cb8;2P;_8Sr(Y%IB@d zN#`(_7HH9jqaIu;(ZFF==^dM|s4n78s9=`3P;v>4lAxMdBx+2*5D;QG!RHNWYMo1E z+iATz;>7L-JU}`q{esW?2=O*&GBPjut2EH{^pen)6BO`=o__LCcyt3nGoX^^`Db9l$O$5iVhiRqegdBuBu; zUt$*_8-mxje}9UI3n*g4-GOh+0_0@TkE*2CLeHT9H?p&1j|^u^l*||SPIMDP;wQ34 zJSX>xjP$-KW=BvGjBwL#ZY1tf$Aa!=$6l2(z_6+aUCnLCO#iEqV6X`iZVRv*_Mxur z)$c!B*Z#`wk)q$owXu&K+gV{5J5f=;TUSyNJR-D5Ohziw2kN_qp}?JK)xyNKA2YduDe`fgR3`8(Ci_4Tw|<^rQ$K*0O+rxI2Ruro4FF>L9FRPjcI z1RO_j9Ot#f|rkx;b=pP^QxXT^bd`toorngobRX4T7Ozyzm`V zw*=v|)DMXmNVj3b<`+9A`?eDbggN>29u%k`E53)dUrh$XVX19EhjlX0z(tC1-kza$ z2*Walu?rXCFdI#OQE}iC;M0{6?&xq&%RE-vs}~8mVl-m$L0>r=OF@`PDiU-dU`q+| zeEh*sA#YoQRKamDoc5Ae{~n9@@DJq)D^F@m6V1<{$k-9Li68%i=pGB+Jr<()s)en^ z^dH?DF(KE_)679W1yvm;^r#*#o~cBf>*>)D5X|gw*bHxIP$1Mi{AlXR$E?$)kUIfX z2iqfho&K)2uvyJkLV3B5+Y~}ywe+fhLsg$JO4>wXAd`S{prP}e%D_V&s@utMS{QDU ziWmaGKJ^JAxn4E~ckq;eSAdZvW@pcr6NAzleBqebz`v5=vdpwxy9hg(ePMrrV#suL z>n42b7fS}&W)+kfZi}Ma=@+)rx6@JPYDUhWDv>KQ^VA4RuuF zR(rg^&pbH7UYZ8j+6tA5n3(t-^CimAjE^z{BV&49-Eh^ZiNiDYmIi$HM_aR5pyqG4 z$9QKo$Rfw~9FgRUh0f^}?mmyk1Y;OX#5|B3%Z6-s0;o-_Gdp^|{-VefLItx6@SV-CiK9z-aT%g3PzplhE24~2;Nq5Sv)yTPM%%p zpGI232X3N#v48P5(t=Mzu+S9;bUCe~s|?}~(?`;pioZwd%d0|dTO$YYZW zF>0+4qt*~zRi$P)ECDngw7!!jn|vP*pU205Q}Iku&UNxw5#9sV`@7n@|d+-29^A;sL^2PXL@?N&lv87F;0wG@dzcq z1HN;4xsavIRsLW)N;;TD>sh0r!(z9AF4N=b9=GbkFhv8`0@1Kw8w;nZjkgexzwjE) zWR*DHw{)Zt^Ebatpj?~;a!@N2>O`=;AsxYKab|{wN>|H0{0891$Ct7l`4y+%*cma1qjJ^~ zMvimJvPG!-LFh-OrJQYS$4XP%O(H8qYP6(kU~siT6G}Q82sx2tY|ZI-rtkYggR{Eb zeb)at7IMe`Z!~&AAUE;iP$Tv>g2NB33*>@5&na>EU4-sncA!7^;xj+uGuB@p1$k?h z63q7H;G=|4$m{S4CM>>xsl&PC22=pt8lJT~?oayZJ@juZT;0!J)XvKZzFt7jDWXwP zAscR0_|BQ&S{0SkPY)(!&HAB~NYgf%r~=t+xDlySpRw@zQUb2le%NY#p9xu7`m!GH z#05X^@K1$-%w~?uOO(E`{8X6&(U)f5wB55Z&K9K&!PD%c`39bznMj`i^JJBcL;h0I zU$uIxY7`B=IYd3zwKB_R&^GU{a7#%zxVe37x_s!=W>yiLi@(M+8IlO>q!f~87W#Tu z`DV7noXi4Z>O+se3F)0F`$~gf1n%Q!86k0^E&G)HWYe4Q#Lf(Ik;d4c!%E4;Xk zpj7=RqREl82{P?L-jR#M*)G;ufz5y)kz}NF19#{0jT&>-w1FFChA?f-RZY9G90xBi zJ*M!<-ivlnW)PC6ZSc^SVryF@gR)Dk@8l>Wjz2*VQvuM|>UIQ3sPCR1Q5_ue{auj) zUJ`7%aK~>pndv8BlhxuV5W`t=1_tY%uRyu7n>pw#xZ)%-6Sw5z0w~{fdj-nfOH-mO z9S)}5idNWQoaEp+m6DN#SS(P?s;ZjXT73KZgEy%6O$-ZIH5x`@VUoCF_jlnseFr}2 zw-x|k#Q2A{q(dWV`k$vS(!OkOkRol?zZ)%t^fj+us6TSVb~AUp&!fHiRj1*stoC%p zXcf&ZF1v2=Y55#Z|%JO`uk?)Au{y_I#)gTZTYdQ~6YUWgVgu7Ty|Kr{{`gQzwMFkl%@0(m+=L7j79C*c?y(sA5ntZ4@cl zk$sv@^Ej$4+fh~8CrD29~WOo`XX3om2X0IIjXwQ9s^m^{%zgY0UkKPV}QNu-OuVRh6 zK1(ZBbdIRCFIEDD9zQnrqb9-=)$eD|Y{!_Tkwm^9zX}2>Prz-Oo2R-s$Fp?+X0POv zOFRiuN#Ky(#7}}1scr$K-?c}(@GtMSeTh6?EO#Esa2z!O?{*Z?gDsa!FDstGsCw>8 z%IW6e?xvvd1=scEIbiyX)k~qEFf)FsYHoeW#{aD{H-oB)P?Yqwrk4!(Z{?p#pu+BFOcmHDRzQrmmWFcVIla$-QdXEia_;)60~UErPcr1vckV#DYZAY_!{0-X4`B&TL}o{s07*H4t>otbXM z8R6KuE(&)6N5u|s;AcpK;v`BLX8X?j9Ge{%W|&psb7*O9Z5_R{c|ka@Ph_s7JR315 z2Bc1Zj>hjx5BXs)vkLg+E?6~y%8$8@MlhBGEAsG-ZZu%>S`o-;9?$*MVm!w0V}XYh ze+f8#wXje};==&1ZkJcbXVysVKrL)=>*{9IL4X{T1b>EKbHa#|0*w<0EGg@X~hfdKKY|Ffs^gotGW@vL(En84@Ums z;eGCkePOG3P)au>bwSE>Tk8(sDSEEKi1VP6Jy`|ZJ$H0y@SXp%@&CRK?m4gE0`vQH zrx=J{5C!F3dkw$XK8*!qQu5s2h24T%n5I)|PnWh%Udz7Rzcrv44Fx9OfO$JbQY!u_ zqtk~PC~+PSFwzP~Sg@Bo&U=9>Tc3A?5nVANq0|)RvLIDQH#U}0rHaWpIq4M$P!2## zQ96dH4({~WDf1a%KgF?;I+z^-&PJi8g`i@4yP_a%OS>dZb3upKSOjX!q{2HSoO9mm0wS)lP&QCVAT zNo|*xdxOxUxD7PfuUVgq7#jn%Yc$aHC11ySIUgt`fOQb~xG7E=Gqs9bnBUG~WTp3VtyD>dr=Oqn@K(-eTxVER=mFdiP%i{H^q=q8kw!eTX zD(8GSXvE-%rW_(0;Tp~0$wN8**dGmXN`Oep_F6p6|Ji`(RdC^I6EOG7%Q!D2|YN;^}2l)hrbL#6s?)-z?Kdg?w zs)QOy%F(GjoJ`w1<_UOwJD2J0r`1P6XKlbO^>Gb??5?M>{+nf8AC{x>h(*`ikw?R~ z{OT{>rw@&uOTFmx3mi)H{xrzdlPY!4?o=mAp?MecvTR4O?aIk_Ylr9VmzywnV6Z_Z zw7)=9m2pF?>mDZcQ;D(L8fY-tX}5^9i3VQ8E*2%C#Ybbm(|X7IB9F~72Y&0`dRMtqf19$kYgl|;Ws{R zGbW4Uk1$gUJfWHv2ciym4^D#u2{EzLOX28fvBl_;Z8eDo7`Vt}7UcLJD*R-Qo^EQM@%Fcjtj` zerxsapqnP2w2M;B%=N&G+x(x1P^+=EI-3V0#7{M8S%)tpPwsK(FUvfDk# z0$S~<8&lMk>p3km`JO;GfFhz!NkQ_<>krOUDTTz6Tz5_C8Ko1zZ1$fOl<0l+ee^N$7h#$ZVD&Spy9jT5CdL9Rv>h!CK-qoig!?rz^J5)%7gS(Y`;d~I@0S@30b_cM z()d1i=&B63yCF@3mA$z+aI?k6M8<=SwKWiXDv>~?zmb#FZFoRuKwd%NiRDI6A4@G_ zbq6P;gPZLp%rG8u6r5mf69jB>3~Q${fKus;4#hrQy6|rU&+UQ^AseA?e!7*W{+k%w0Et08UhqlkD}-FgFTdO;u>LWM zH0;}N#W3cLQR-Fhrv&c&0ZQYuWLn3vM9oP&AZeO!orQ(H(XuspWH+@J;#=ASS8lWf zWf6#@`$1A=+OFFVwX4W^^T_`wxu&PlaCNwRd;g5@TK%3Xg3ZJ-|CSp2LJ=*8bqtX;nV4701L6CnoZMm=X)G7b{BHCZO0Gk11NTbFt z#b^Av{q*%J5Grf4z`0bZ$earK2II+N>OFQbzzP)q>E(0JDShl)n|W60yxYpTz=deU zM0;x+p#@Eped8!MwoeMoPzj`_GJqtj8sM>PCuJ-ito3vxLJ@YQsq2zg~jkgkd_*tN=@N zw5nC@wYjr@>}dMe28dp;hDyGYsIFGQZM?PR;VBKJ(%rO87;N)1kaOx&u@7meXdY2p z@0LJU2>W{C#NNS-7ES(0&;oHZ;HVu58i1$_jBW{B6e(I z=M0J^jNJG?k6#U6j{NFY?7}YQsa#*HvVQ^`Yalrpharv@{_ip{_2Bh6z(AE`PNa=5 z|56rluAM~1GM0EagU-G}VbY3s?(B3YV)F7_Iz#k;ao_3>Py^F440p3a(GfHDePKf- zWnu2lvtj&D8RX888ng}&NsK-q%VKcx%lT-TN6z#2ckB{EN5Bq1q6J_5MCsr!zI5zd z@ApukhB(FTA2H=K6VnBFZ^|dSVTL~S(xM-HQ(>f>iOKfPQ6PCz5XY#D7h+WSqD8qd zm}VVG19x}-+1a3P)hH5aO$wWKH)%|AAG<8rc&mjgQpc^?$W@_V>Q&&-J#{i7{C^dg`8`Iw6L{DjzI&n=lN8o-YglfJ9yB%F<^}{;7|{piIS1o zB7OZzGaB~4^4)*m;|95;4X)AHt_-s%UmlYJP{exXuYtj6qulvA9%uVx;xD@>wid2bxzSGd53ph;M%% z*33uC&;3Zuu64g-^q;s)f(vLS&}IV0-_Yk<)Kpv zC2G&jb}KaBcPJ}}I{Q8nQ zkICi}PzbIcIq}r`&a_;gRRU0`t$n+(-cU%zw zU%LD7rOiErL+pk+CW-|$4$ZG>i08!}5zsxlOWE7JD|F{?JNiBU<=^txpzXqzcyxZ-3?rWAdS(k8A09-(Se#%YqvgQ8$;(fsbco@hX~bpotmAu98f0DQqbsNaCq zk6a`Ga}yF1vw4UN4+s8f<`6M^ABUK8@1#9V5ecUGWcHJJRmUk-Dgjnd@a*5L3A}%< zzzL@QKWQxQBRNYExfWkBe<0&+F#?@#%K`W7Ni>Z>%}*_6X7#($B`HEx16>uDo@ncl zKqTPGFb^KhayayETXS*8*dL6No}T`UwS3&9sWBb(DxPb=YtySa=?Uo?QPq%TqX?Zd zg}(9~&=#I=Fl-q|JH;$WM!0!9tiUL=YA)a4a`FtiiEo$VvCTc;L5C*K=Jk9t%F6D0 zqOj{GnbE;CH}soyruE-p-voR1=K$@b*Bkj-5dxg-Nv{#TeI^&gP&+!*IPp_jis&C>u(a(8QZ~mZ$q(Z}4-KUH!lr~Z7Pq&>7|vySe>UbZZ`*Xt`%JjErj6&O zbc3eW_?}D6gKAycUmcQjwWdfpmDxPT6courvx%~W4v2x~XF0nLw1Hc2)@;CL zvvQA4R)Ul|Qxyrn`|7;|%@!?tP2`36Rzpsc=pC2yMkr`e6#q4^iE2LWY5AW{>4;49 zQ@LKOZivbYxt1mfN1P=r2TBp{AKa|W0m>V>WUH(E@6dB>bB?4XA-FK7FXiREJF7x* zv;C)fkI3J;S%La25-jgC)hHWVW9prZ+#HKAJ(Pa}aS9ZONl6E&uU3Bp)NF8xteb}# z)b$PO5fggoC+#2+n!vyR)5h6Jxck^>*TRD7aQP!jrsQ+4$w(ahytMvU<5dpf*rj)p zb{*|6_X2JP(y1@c?-7oIgC7GnE-9`QH|e@z?8a)vwR@mIX7XgRp~_P>;F6`0GvK4> zO_LRXNqeY)<7ry3N4DWf0w_CImdd0 z%Yohdm~Wr+L;5SQ5ul28ErNXjc?ltTVF&3gCU`g>oaMiIl?VUNfNkVY&=wq;ENcxjijBkdBfe#s!ciK*HJ zC2~jEpOBD(G8~}!bH{)IH|{JvM7GH}^ydbcE@`&Eyxd)gQm54zl@6&HIw9;&cO zN&^}mK$%%Hr|wg<{6Dl^1#jiq13j%FuSZ{++4$qIh)LeR;%`T(f%3~yf(~t$_HYqM zR{1{t*u5f$9!UNr!|u@kRy(y6Jiu=HgwzH2W|zX_an1G*y3F{2wU~v?9`fK+0F5N$ zg;fAZ_r}tvw^Kc~^y}F{tD`POjP2NieG_RmRnYxz&~5qzlKJE@f{EuZJZ!eM0KDVb zIr`99GRKRdn`mbfVq6=LM#k{IAo|~)9%eWX2t>Bq(9G#TLrN(J39Bn;i75eBYv@wm z5Fx&ym2O0?NZ?+3VKsa*2zmtTqphQ%8d1w+iyh=C8$#MUZV?A`Jien2Fv)*LiSi+%se@F)z%R{ zFk#_-Ev_#8)XDmnzj31Pg*{Li0|@l50jUoSlQf^=?g>|bE*-&G3D9Qxc8o)NEwEn8 z-NLp4H0&SxOke*DWGu70N-7J5=5>5=dp_Q|0Qo=*{tYP>7uyBCrO#jPzIUz(RXz@iQ3##j#kX& z9HO}K$+8hCq&JjqoXYy@d#FUoL=;6N+*~8Z(PcBL%t7yH=catqVY?XH!RGPhC^7&? zUx352Kd@nUcWZl^v)lx<4=#or8{nslGBY*V<)Bh?w7YG=PFr z=qLTL-emu?+VXFf2VWyQ%Wk(@YWQk=t`*2M$j)Xd-F6)*!=Ap6quE3WLI>PZqM2-> zisr3C{}P4pYe~f^Axc$238i1REB(3ObD~}g&Smo{yXwss*NFFSDt3w9jP1Rt z%3o0mZ>B0XJ3l48h036W+qe}ZnP-;AEm>$P245$w99PqIJ4~=z;z!So6*E$CxQz;WlWp*lcLZWgxFRe{j|}K!dUMx%WN)bK2ndHP8+vax*0u zk*`ayvSk-w<)iSK)kwA|i#a7Gz?= zEIh-^lY!bK8DbwS<<+N&2DX!Xr_UXOVbl(v76$TzqR;XsTLYvKMCl>0oJv>g?T5mL z)t0t5_}J;*QO;w4f4x#mtOf08M}BZEzSg&b$NtHXd2GYZJOB3f`|WQCU~sSeTWFg6 ze@}Ur031!3J`V5zfo!t(8_Q2L-m&6@gcy@OBf63^0&Fa{bl zH0w7flQJ&Pq)Du;M}-+CMd60k)3xI?8E)^;f~4usaSW)Mw9lYtN8}np?Zo!Wu1Irs zYaXZbtZ%XCLP}SGOiZ5KW>?I2kn2lB$I@Z)*H2g$sN& z{goTV_dd99Ozti0)>3}bSna&>iTZK7RfDVJ|@z7@&#Jd2k8sGJ`JJucImKH zV0gj5o%>=uk+Ksf;av1jfTZpFfG5r<0)sS8h#5j!A<@jFZa6xy8EMqQujNa zRZcEhwZDdeCoj|cISX$+_kEq6Cued<8dZYs-~r9|IF>ozlde*Xt@5QHR7}u#Eq?ur z_q|ESj5%w$%;C4v2NPU$i`Ld&?a++dpJcumH~(km?hC`qu-6KK_pxks?r&H!PuHCI zr8)lpon33tN-_zv9hGIwdwx%rtb(p~H@S);YIalGyh3nDQ)aaG$IvEKjo9)(8lEZ@ zHig{SZ?Dr_UjErqCdAQ>k#8-`Nduk5Tgr7d==GiLrJ?Dyx=Vvnjy`P8f+I)BgO8wz zd4vY=6bFgtnay?v3m!KNrVN)`bznaJPM z(Q;&~5h(kXmc~C;f}ICra>Q`G`pYKCyK>`C<(Sx=Qp0Esr5h`bPX^W}zr8d#u2?*b zcsA+!Y#Q9R?$kuSJ^$m?@?@Z18PJtiu_(9PA|Ru;0{7AP36`SpI%r^#gK_NlhuJE`0t1S*;bmF03M>7 z_Q>9VNpmO`=SdhrZFYg1c7n^Xtm01IhIcQI zyv(0M-KH1fWF-n(?bW9})Mhai$?K%lQlS|e zIr3pNEdk6b$MsRPX_g-&j;@Z>Y)eg5xLxud_v+5rt=Yd4g(Kuf}2nb)-10u4Xsx zZe*@E<0ht7OaSH`ed|-N+Xaq~zG5gU&nprnk209Y)lU6S3vd-*6;+o}&YR<@xIUBi zk$u$wIBA(nCZbs$clfMgD=wJUHr@@}XN9jdi-icbN>#tCI%Q|3hbfumt2rt{y)S=_ zT^Kl#3|;;QM=rA%O;^-{;LN9p zWpcWLY?f%f`$!u?7^XS7Ivpv@178gr*Y<$Btqg-KL+B`1thgRT!gFqU!VsLq|KA!{ zQl&DW&s83+Q13P9rni^uHJnzx$>Jb(Q1L(}JG*i^er>A4yhJ)~mF%yz1b=9}1gFeS%~MvX zeDwT#O{Yr-LM=eNOU=>GjT?#1bCCFDE*Pe~LQoW^rI!)6|!UP-lcyv$IQ6hNze*3{Y5UfGs0gf8# zOJ2m}iqiWpbw$%rcaW<0&-E^ZfOCfX(ag(lmM1>LYCV&bdY#6(%Tk(Otj~Co@eSNeTiXfaHpa?U+ zQ!)8DbM=i}X0m(4VJ(W0XtV^4I3rRcYF&uzCP-EO9B=_3=AOF_d>y5CPl|Q+fQEy( z$!>}Cilk^FDS#F+g8oA;Ju`O1h84ZeSm+r!n8H_|+cAVFrwcxL_Ka>JovI+QEy{=2 zI3muyN_?IMqM`UDW{WtV_zP7%%6pQfoeZ9w3B^0|GI7@*yIYfhqAozP`?eYfNd(M7 z4>A=Z9$u0kp+`yfR#ObG1Kel+hRxt_O^1Q-J>|}DrD57~#|Z**QDNQ${}0LOoK(Vs zxW1hyd&5%ur}Zj95b^jnDi5MuTQSn4Qon?Cv%zUXd{;_~-r59};O19%QP${E5^xT_ z6d07H(ZDrci5C#u`KVXJ=@(bvmnZi4Zm_L45vg0A&KAzRogrrD+IQ*QM$m? znEM#6pmL1+-_i3QQH#Mv3RoQp94#IOizXx2hEPi)p$QRBee;HnLhl9vQtMc-A~O7n zl$5*ZA3+}MXDed|(s;&J;BqU1Q0zan);acnXsvqA8mVmv!t=D>h`q=Y;&J1Pc;1W- z3Npm11_nwZ)qrDXe$6T@LqC^<=#{It5QIz3uh|T{SgC1a^OFHdtA};2r8A?!ER$Lu z4V+ioK^8~!<#hxGyX$2MJ;_d_7pkbqHu zSoN(usqdyA8b+Pm+Ep`&K8*&`Vbi7S;hKo8t`T;;c=#HZg!4wfFbqB=w_ktf@5xqP z1D1VFb+19M7wPzciM#v!UW1$@bfO%@>40CG*CkJ>K)!cAjid0A5i;6DmkE>!!_1J3 zOd#O0qHyy(j+5)NxUGt8?o^h2zS+@UD_-EVjvi!9`gp*hER3#eYuvnfljicW zJT*1a-0iI4>M$t*?YmdV#{__`p zN2%l$&3Bn1k>j$!i62qpb30X5wcg%;eC@F{XI!vdx02)g1 zSi}aE%dnGSBr7dE^LDAnE$zS>^m@A^=X!^y`g;o?h-i;Jg-=;qPd5vp!C-fzBn#T= zZ*TGHed*w%s!{sV!7fTy@(UvYBbQ$~U<0UrUc1wARpYoFY&@v_9raj$W?@seTR zYXs?&_R%ewsbb~$q~38}*|aPWZ<4($nSv^I-i>H-)0uuMH`eIYz3KKfsx*2<(RIlC zL+@AmZvkye>|mWGU}YEq`Xpbk9xV@clpIs?Dv2(G$gHK(HpORGkssDy6a*c@Y5 z{D$uUqhMWWTRi_9U)E^#(T*W0vDo+q`?}n2RZc z=Zq^}sv`H;(<(~^wmuN0hddr-_ZKlTh@;harc`XHtH;zGcY=pS>dPNbCi;iV5e)>M z;kZNTDIftwqP_)=;vQ5^D>w}~1n{cV`VQbvxP}- zi9>!n>dtHIUfJPopQ=X!g&m|>W3|;ssc}WVQ+|f}%8TVhF*?VVaGkm{nVaW?z=KGy zKi;4N1d_un{ub|INXJOLhfvNcJxqkPiF)j2)tbC6`-`GKW(}mVNrE;gynq1HjN1IP%E_m%OY(IFeLUagY2O&vx{&<$!u#0^)|8d1i={er z#J7rEfyus3E4IJc?WIaH$Vf}u^-;LMqsL_EiZ$XPNxv*?KoL3yGFU^y=Em(1ZS%)? z?XUO>rIHoEBK3mXTGgBtv+*gne_XmA^&@Wy^V(dKUl7|@=)t;M1+94pPHKN`vRCg6 zww*%nbCcOFdtfX0p%@w#1czTcnqS@@L!HdZdUy78*1q3s4uc7~@^T{`v z0IdRCq$+KlFFk?6YrWfjomz&Ku%=Ppu8}|Aw#G&QOp4EgsU+mmVfgg6{uF}QquL}Q zpEe~HmX->fI+(u)UhEqZsD|{%xC;@z+aV{j6j_y0|A*+X^Iz)S_e4wI8qXr&M4D#O z)mYx_$+7Iwt_ryk6;GnWGchCBZjUO-5Au}@inyV>GN%5i0>#ZIyp73fu%bh|q3W2? zmwbiCzDBmFMITj64il1mt-Y-Szf_>Que7`;r7Vnl0Q$8dg$<|C?eLtZgckl*!>iG!bZFF@Rxeh)fv{0wcNyv1s| znT!R(rl{q{5XK$43v{r)D<+Xe=_BY1~Gp5a| zqPc|CKI2($=@>Qp?(2ftW@f*Tw1{)+!1>N*stfQ-$IQGQKSD@P`w?zg0ij6rQESE& zH8%QSGSy~Q)6Mmj_mWehW?IwV3i^N?v5Qhi0~7NQqRIx)I+msnfBO83 z0x-GIVXlDwsXAZuU0$Z?rqsV^@P%BZN|Q1+!98=qq<6m^B}3EgM$vV*5|0W0K0&zs zUW4)!ijj54CME`Q`p}G?n_^$OU=MoGI zn^PIp23_=;KEpM_IuGXg^c&JSlNCH&e`5VS_g4RPvsIrPFrxQ$Pl8|uoBM8E9cj@Z zcDZ@qfQgU^n~gX2bt-?Xa56Ibdn?iyff?05he)W)Wf|8F#F8n@?x9+i<=oAv!DfFU z5XjX(FLh3Iy{xzv_tD&c7F?X{wZbCFKnr-BIXMcA@QxcjjTGS>nfXcugBcm6h0Z*? zrzV#<82WkxlOX8x2@vb@4Wk^ z0<@CBaN|$(Dfot|T@!CkqjV2RQ;Ek6sgK-_q_As@NbPu?H{BK+i#CO`2Q687-(n(7 ze#nzs8tf4NO4(^{%(Pa}yuD6|-6jPa(3+a@_>M6GKBZA8EKEnUSEuzE5ht-&?UM0; ze83z&?42%MNl0?!CqPSmYQOpSZUCp`hjQ{dbHVrPh3?U+0y_!B!kbC?6&HlI?Ek#j zMq-9tcMIbyu*yH?=h=8I6ZO-9L*3a(lPih{VX&BKEmp#yMsx-^53V*c+hY9dM)KuR76NPM$Ya;yK2wI zSTy(_gK9gBav%R;YT>~_Qq&Kp>ZL`c;xv<=7F``5{%2chOTon}1r^}IhQGh$gd5lu zOG+rh`-#LAQ1kWm1Rq@Kn0VyO_3jAsJ^-Z*)ap4cko1?T9-sDTO)drJCnhFzOM4O- zDOZAPz+XDG$s&+8US`c@VvgZz@1D}>uI?6-7YzagH&pUsfKSmv^t$DM)$EA{SvQFrk zwlfvZZ<-JwL1JX4P8fpT!8vl9PH!jmnbppaNUbOP#)=B~ylxZ^%G4@})cX*OEyc*l9(4mWz zczDpKjk_J%k|180f8Egc$RkZjHug13x8O=9GMrVos`V&)e*2j?-|NS1!ZYUHQz#sO zuCh}%UL;gMA>@-d{;2HzETH;Cv<0n@6$$pPN4|_d9>w3->-g&Y81k@3q%jGefo?*K#ZvF`#t1NPTM^^Ss5Z z=9nR{E#vBU+9)1g8susdcHnXBn;lc>q&Uv?+#wPb8_rP^tN^LI=7*$J6dVgwl0R9N zA<2_v83#~8ZjU{9V1q*YqWJ>UYTHTz;2lS_-$OK#S}6KkzWW939y; z@j#3q-q+S8p5h%Ya#EA&qwKDi)c(!~8KL0+op4O?klFyoCpRDeuB8}#NKWOSj{BhX zAjtL|sg0VZ=5vZ@!pZ*9<`~4k_+(_soFminbERFp$eGFZ{5jt541@U1)N22$qF1s;9{5;&~op zbFX{Q7Rj!`m~`c;gdTDaCh8#$?kWWlbECsVy^dveTb?Umf=$#RoS!m*D@zMlTV>#$ynnMnF9J128v}m~Y+H z(5vBPcTr2)x+{+ssD-5=bz==TH#4g~mbg!)tSsLKB+gUnv8t;#Ktpng>WK17fc6yg z9W1y)60AR*&+nL(rCDCXEv(&b+ZzP#EywfbX417RuOSj{5Hq9c%aqVcYef3!3+BmH zOYO8b&9z+jc!PRU*=}DJi|>rPdErcd9lr!}()V(I+2%@YPOqzyX4K;JuaQlzKd4Wm^@7)T_o+5_+ge`jVT>o19)Q2=^=;^ElXW(+O;n-*9wC zKHTso_h^}PN7TAM?tfoHvK6cXqE9vrhmyuGLP}OX$br4{6)BW;#(|8#F!An@az$Byg~X!xnC z1KHtjm_C*}m%Wm6JToS?8A9RXO6A5~2o?iF!19>lVV$Wr4neck#`sUHDSb(@@sVWd zuWy*-d4z0Q*>DX1J>!r$odI$NZ#s@tR$-5|Q7Fj)eK|E1&F@Ah$$JS%8uu5=%O$vi z(h+BJ)>_p)K9@H3$1xZkbL^*;*B5m6R#3WI8OM^I;vhbM>}04PVh!39Z69^C;dNBm zekFQ!Y%KiJ~@e>eH@*hK=-!7reA_h*`%1@hUag z@GDAFC13c}3)M{gbSM7y?T(3|K)1WG9#=A9un*3md!6UMM`XPivR~Xv@M?F4z&GNi zK-4?8yI;N}nZh!bABpp0lGwi2T%L!r2nJeT_!`eb*QzJX{j&tZxWRD0m+L@_M<+fD zL@Mn7-D~{Bh~j}_XwF0CnKCFyDv8)O7ccC0T<&0$fYm&uplAHoZ7hF2Muk2UBR$1x ztP}s?t|r&Z5icVE>7v3}-4b5ncl8D5b(M6>)&8t{QeDAh#)KWkAb>L!mug3Tc36J7 z$37jQ^j+?pgzFr>efw&O2t@m1l}To@vv-anie2j+Gd~tx;QB|TjOssH zOD{2`n`#iVlH%Rvfr=cnv-mP!quyY<;2MUcHYc0C`s7zA%|UUu`#$W?&~{HNmX5Yqd?Ov zwQf)Wb!S>r*oAXKB}c1wMlLS;S?$aix3~2~v%9+2+!ZbPBHbY(!W`UW z25=%Vejb9C?l1P1;8dKSe%W2Lr}@F=VcS;si<$o*VrA4jNXfV#Rldhsn=yIa<6eK; zd4!n)G(o~!`tb`VG#8oD%wZi4ZAW}X8?;FJ*RXfND9ycm9 zn~uUlfo;bx#K{$co&&M4x1sTmeI^{p$p(-FxIU^~YVh%NOt^aX0LJ5x5kk^4_>{YJ zdVP!YeJfvgz?j$bqn!URiOJ3#9agwW2R*rL!mOCa$y-1N@5K8w(Mp6o1`AEXnyqRq z^P86>r#Bhhn{u@N$u&|L2J3MYI8Qvmq2%jHXC}>0aV#Su+S^45Fr#kT-id)02>N>r zRD@ccl65y(vToW8hw-M9`aiIFPz-*LRcaE1>ISSwK+0=RkFx1$ZkT;w{IgpB{HuT) z7lZL{%SsCYocBr2{!jM2s*54YyL=kCz}>Px$>u7}WMA3w&`Kgf#o@^JswEd4Fb*~K z)BaRrJbs*-kVzsKeEke1QqtFNG3ix*&E?@c_XGR1Znt;%x|+&))i>_nZ0u8RcI!S8 z?Xfx;7~|BW*P8|)a=G=P*zz<7=RwLJvIyWD+RqNFH7YmA_!$Yur|q@psn-qdm`w3Vw#-()>8TY z{(VB*oHqWpWeQ=5HaVrXx&!2J%mC=tku_$XN852b9Od^yA0J-VqW1#o#P(dKec5?x z{uv$5-y}W3xmGy<_9&1amDZ>HY>lN@lAv*P#Qx;B|KFmEG`~MdP=G9z_eS6Rc2f;t zEr>MT-*K#j>7Fc`Z+{8rkjk@Gtd{Kw0@CCS=1q!yzFRbvg0vLhv*vg2RRw&GAYXNX z+4}Lh*bqD>GrSAmh(aH7+Z`v7_$Zq7avAmAl>2@qo#K&W$o{&$xYJBL5cTXCk%8d} za4<7|F_Hvl#q5ti3%VM3d!rgjf0XBJ`9^`vqLr&-hdx^q4I{RHeFOMW>!ihP%+Pb} z7|4o$Wzo;?@N^D%9v9bZmS+U{!uN7ofy_ixXfL5{h@0n`;N&I)V~T~>XcBd0&SGX~##66Pu&q-USCVbPk?Vif!i4e(Ji^ZjX#tx9jHztb z8)L4RiwN9QKW?k6Ryy$O@S^$pl^1`in=6!CV46RpYa$hiT2eJJZI1i+b!(9$PS~+o zceJwp2xwa-c;LKf3(lbBbm_6Rm}*E} zq~)<2tI;nMTW$y%?*8W^*j>9q$Ws@!R1WRkY@RzvL^o!J68@Ncx`W7V{jH26%=M0R zAi%3;j>83~aeBS(U0a_y$xK`Nnh2-AB|g~q#l*VKU#=fIimj>X{eTGj^W_7qS-bD0 z_nlVbN`7wVf!6QpDGMl@g)vlN)=xLZ)&MHDz({>(`TOLiGX;--JKOX`B;e=~iYvE< z%Awc?FB*n=F4s$l^8csnF(MYvAfm!-4h%c|-POP3(W~HpJ-yegkT{DI>UYyK(&F}6 znwgKSt@dhX@-d>RlO15?oE=lU(wYjrW>~!6&7+;SPV?WXFt@6eNnFd8Q89FE`r$m) zAKH45rapG+2`g_TLA%D;A+Ki!C9MxDh5vnyI<}7yyEdVZwrv^2gMg4;s6wEvl~)7# zW>us59L!DggS1sEw3sNg>wz+_v6%&Z(h+O~#x2(7vel+{IzZolKg_@reLu5QzEdnD z%H6U+mklhVU-}=3T3AIbqm!=m;+>gsv?X<#O#`{0B&oFV&;-_!fbOt|c&gzVEfE3k z+fh_X66;YpU~>qM=Srvqie%fUaZ<};r{f9byM(k#NjLDtW-@VSiBTf|M- zU`zV=P&pYWehHuK%ULI&jQ;yMwgHFtPx@~T?1AXSHP>fyQ8-=J2ygLa2H-?iy|Kl0 zd)~jQ;+b*`uD&8?9q>sM?=Nn4UN?rNu(1^4*Q}vSB7@>qJv2x({djX4Z)-Xk zT2co`Z<%Z$98XFES^cyu@J(iATQ2j%S{v1wcVDA^PJLFa#Kk-UZCMs@i!103gRv~= zl6q_N`|XU1(Xf=3Hh_L*s~qk&_1WP3lQt+z09g=$DjeE2L@7qJ^Dr=^`_d|NMzyJ?L_}3ukvbW1Y1Z&XHh$N?jH^7wfT1 zj9QI91+@0`Q_=K9W(C4wTC32~~pX^0c%y%}A#87CKzS6JOF9{9Yz<=@M_1&>% znVTH!(hZji)m3udZV4YKaWWMrvwe$LlvNbsQ%AmieWcBo0xg$%;ulFoEOn*ikB@gV z6G+SXB&S>J)EBP%0Ahm`2dL>$<0rH}DFL13`2z@&@)gwv|Cf!9=Uy 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%0Dx~1^e82nrg!mX{%%aBflXdjCz3Jg^6zV`8S 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 A=Kufz literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/4x/starlite-favicon@4x.png b/src/server/app/web/public/images/4x/starlite-favicon@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..64f90706dfd9b2517061ed7dd98625ce96e867d3 GIT binary patch literal 4667 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%0AUtsnWQVO5p({rs&sjQ}g`a8_R;WJTz(L+M# zs-JL(?MsKDBsaJ0uMZ)OT2y$3AQ}sR>`H-^S{UZDPC3;@z-d(|0PlnF@@u>*D-UGep}>(*8iLE-k}4 zWU^FrJ94^huH0=J8?X>l>e?C6zFvKQja|GZ%!9y#`3E z8CPk$TDrICFF%N0AR@$-^x1d5(`jJ+AvyWsnffn_@`g7vD zx|>9qOj)h)203cuOUM_D`<;S0FGXoquiJL0?$DqG>B_RL<^8lIVb@!&n-_RRp!eeN z!x?xGV*>&}K_u6p^^woi(i}_?$5*wAA0+#7Fit3N?&I{Y`{Qq&EjGIcU_85qE_{Pu zTwE)4$1A3OGD!m{ZpbrYvn>q{OVPV=dh)EaU5Fgzd&Q9PC?N2P5zUl7n--!uFR+$< z2o9Eet_oC176+lbo&ptdIDB;B^-dr~O!%U>T4ZvY2nS2Q`Km=ucVi7IlaQniYRi>9 z+)Su}O+hD|W;TQF)+g9MjNJGZg^zBU3P?JNVR#h;>y=k(0F(xp-qme*Et zT(Mby(a@h5hupTQU6*e!XRCHRcHH4djIYzP1HXk$u015&+!^HF_gQ`T)9*~;{A>~* zS92~BVdwGFD=fO7Ne)v`{bYyq+D3iRL*0-&*Vc;C`e@bF@)r0kl|+m?LiVkZoWPsw zEjuGRMZX`=?t5vu@kaii7GNWRv=Wi#;UPgTgZ{|{MJR^f28p#FOLISlq<$6+@fW>m zRgFS37`zjl54v{2v&dP*=@F&Z`b@k(?i1hi*aA(LrfYq{+JCZ6W!JE3Y>ibaq?Sp) z``mI~rYYvbn6vIMmjXoEHL?7aOc^VEqBl*;-VrPDos+=4E|3@|-@aq>8 z-e4HU(J8lX_Xjyq1~jDaPrVVG-^A>rHGOWH{t0s3-$EqgV|UA`*K{#y?}eA_x*q_r6BY03mhGI1;-BQ1KT5QuA$mD7>*H~`^Z#7)N-;AC7BaEr z@mFmPUuiM)vifeN?%eeX+s~id#2d^Pw=aYM%XD?8Ksls%=K%QbPOtuK9hDQqY7x4u zMz>DKM9b0K$u&>NT_r+CW{A9g`^1}qFgS(o7F{v1!lx+o5}a708zqc?zb0>`R|e29 z4-d7v2qz`ct~E95Ryz;2vVY3pjv6ybzj#x@QEHZDS<8zNDn#gBL1MC|)P4me&qO)j zH!Fjj6=mq?hiuE0*`8H`YTm+y3QLc&Q2cgTPrrp6#)Al1#L*VmQ~DcSQkd&^lz+Xe z5r^}Vd{!R0VR@onUz?eE08j1{jVQ6&LjDisJoN*rKYQP}4#WiIk+h(jRc;Pbp+I#( z{|QXo;^6FUD1$jc)cOg9qO;Au;=dblaIeWns~i<&@~H0SDn$n^AK8?|;X-GePzxMY z`Fy2$T_DfD)cYEJ?@$J1Ct9y`{#v1fi=L~%19piA`YG>yX_-{qsD!7o&!vR083kA&&xTIcJsh@;Ycr); zg>Y)OKA!h}N?; zQ=qAHxpLRCk`oq)Gp-pzV~=t&4; zj=J07IoN%d#o29N4&VFnKh^Mew}Ri}oB1;Px1RMwY+-;jbO_&o)j>St4x6s2hPX?1 zir>(Jq~7;=;Y9`^&AE=I!Wh)eb!6s6*e*c!sqd-o1a48iI~4b%V-ZNtm)FE>Dh)BU z{Rb{*UVavefdU5H)6U&lix-!5bGGG^_IxWhoPC<$`Bc*yav_Aj409&xldw0vP5xm~!g7d)jZ)Y31(qCGQXL~MVdo_O3o zN7b%}EV7VmSIOj2cIl>($z8i=mZcs$sj)RJk*+uM+_#h5(|Wp9C_GocN0e$0e)J8r zdolFq1^hE~?B^f}$c6KkujYlv(Q#v2J#mbTPjtB6+a$I!Zae6Y=Bh_#WaXEpOLFst zAu6j$)(F+p&i9|aXdx_R@imI`wjaQ!m6F}TeLL6mbL7MQg4OYS`gjgu+sU$G)1xlp*8COFV(uSTfBo9=QAeAM*c zHe>bd*hu(3JiDwmU%Yq&b{@Q$qesD;sq+V&m7~Z!Nto5lC^kjj>k=~Fx4m~V9p!w8 zTB=0=)hmEndj4awu_I`l*QcrUMZ#NzlrH-R(Wj2-=dtIFSlVSt&eFf^V={);J7xCu z6Bo-LRKn|$(qR$<yG=IcO@57Az zMokpXFABB#Us>Ky_2i{FaU(7SwP9p+Lqnu_6eCtWw#&+3Nzhu=|2+Ren<7z$*>;6b zy=%rhfzDD7uhm<-q#XBrsk-PTH$Rb-7N5$s=Obb8(8by8unPgGkHM|I&n@57k12rf z0C98yDbRP=I|v4)vWDZ|Lc6#=4+GGuIi;s77F~I^(kI;DL0D6iivPI7dUO7*A8xt)dno^5*mY&l?NMgUD$Zg97Iedx~Z1WbQ-@A8Mx zZk-4F73cZHcXf?oHRZl1&j9O+Uk+Xd2nSgt>to3FEWLZOm0Aec!g-ia@xs<~wLXbU zovfl5l=J-o%+0zz9H>;6mY#Zli*{VjyGcdYpsuQAt$#fAvY&{dmM-J^={%avV;6cs zaj`6hDXPcKS*bdCYtB$Dr-LwxkBOWn1jh=tMeK`qMEAeQHx-)h-zpt~u`=MtN$ z(qkwc{-R>@8(5I6%h>>P-MJm0{Z^{*~-=o#O7-%j(<*o311k+8O*+HdX|ApS7ra7M>=X{qu7b|@TbBZe5#w)qf1R#Q{Bo5%f!h}V5r4fgxX#GbCG;Wyxpa)^bM~!hsc((>b6t| zoxO{1g17W^B?D7MbO4*Ix zej?zFL3eRt&$Co=yH$DmuZje_!~H7@-X{h^lu>+2?2cwGPO7T@UjoKlmq4MhSh3QXEO{dVlA~pG?_* z+{;tHg3YL!t*8x+n)p_v0q2LpJTI0O;LV_?vPOp(xg4iSNvePyq{oq`JPdTY;VXj| zszhUhjU72cOR)10Hhs_cti0%)Tg2_Oq2)5;@8rzJpWaU+G1a|=~8?YYVoQWW#w)Lz7=TcEeR z$(R=%i+%kE{e8AI!TskxCQ|faV4<+(JKKOt^NX%_5Z@wc%-CQpZYO2tJBE^bNi|AF zS*vi@@uC|BKE4k0fz?_b^psD*-vQe|`f&1~I=bH*B)M@TryQJ&aab;;tHOdZ%FDY*e3UvTEyc z@8vVh>*eOQhmsQa0Svun*!rJRVxU}PiT0L1>#_=V##Ea3ozeR2SHjq|RT#HP;7Gw|+mofWugjCbNZUnXmaUACKZ>7YBTLU1J1Hz~{KOQl-;Hl^k?aU02bK;Lq?xbI=eM3_ zHqKQ7IY@NMgS21GsCx6PM5X+y-}AsQSkH~4dYztOoj#23{oGUXJB^^p{IC2FBy$Fk ztbgY@_&;+K1;LoD#!zm4=X;SG6{_LxBE?!_X636}O9;?2H=?F2u<1$*4X4aj^?t}A z)jMRX&OO%aDX~tyarb}~SsS~;V5Km0IWSvu$ZM;JP5$<$qaXOLddqu*R>)smAB4o% zp}s@ekd4+U!VD|lyMobt>0*BEJQvrOLyq4|K9|I4^hvzZ6^M}wz44Q7`*#=yqoq)` zaCgWaecgkvtGV(D(sEbR%Sq62{=AXAc+4YueDrG>Giw*8O_x!l#W(FA{_B~-H(Yq$ zvQa|q)Q~JB$KB%MpPc+A(J`hFp;?Ll_#FHR#Ya%u$1fCXO-nGQj-$JH0#UM@sEv0oP zKELhl3;PuWR#^9;iZBj^oR;0H}-$gN|9)h&XSQQ;a2LP z;zB-%B)Fo4lA+oM=OC_keGuxQ|1c9G^a34|lqzgv?8?%OlvlIWFwN1bOw#8(&!m+V{EDX2Jt~V~m?vQ>Skhi^a*wzI2LRO$>N{7O==Yi_@jRZH3)WK=8 zdX{nc)&?-8cnrc+?m(&p){$w^BUl_~c}Hq&jK63C7n_oxYkW@dX;GJ3{`FXwz3d;9 z@WJdMK_(RjI6u};qp-()e0|V#JJFaa|Aps`nQC7D=D5;Ww7KRSTR*=R^MAITYnoQ@ z5BG0EY+UNRuEJ>o5*s1Fo%4N$n(A#gQMTjDhX+NMg8p{aN$BCB0U|Rt@bD~-U_oAA zkO2#l#CTGN-@!MZSz zUaNR63*-~52UNWD@2NB6z5JsKlqN3%agz-C6@syLeG zk9CvFyZo^4wlHg_&v*PbvBqcF5D-kQT^ObD?L+r#7s=kkC+#(0nH_?VS zH;Z(&6=0@c4|+V3H*bn1xtlSLW`UaL9&`{aZRmcvW?M8h}nOBvvEl&Vn?QstsepP zF$Sr>6G~?wFUW_g@8e*Kk!Kt&k6m*D-uM04WrUMv-&re@81A$8rHDIke=T0r28BlP zU`_6nr%CE~AVTM4hkxnC{ZDtL>4(XdJ&jbc_tyx#OT>SiN73NgW*jv>LwdcNmnIGC z0Mmy?Tv?#(N-SmY0Abe~c?!yQ4A3~tS+EcVc%V=5L(5&e)3=7*L=n2u%w0ExF^4fv zmBTzr6Z{vI7pH`@I>He*9Iekb>5=n}Ib=gR6-9Q(2QDCp)fX7Ag2(M}{dqe&{L)II z`^}!kP+`lvZ#7K&Cnxzort-5*X!Y5|{#)jFAA%V@V0O=q%i<(~BkL7fEZ;WzgE3dD z;7CV}AljNP<9X6nj_;t6Oz_)K_@w9bd>HlT{%&8Em!aheriI|) z>E@s@VzU!q2gLdjQ3uht=EeLPjR*>JE^xv$2GX#o-B5H! z!Q$)gmfohP!VDVudA_q@HjrBRzqZX}3g9>$KcCteE)2xJb~Kv?7D&T#j}O5e6yB+i@HbFH2A74KA}O zD)Iky6dBsz77Ng(ZXLes@S~!T^R=3k`||@UoxRq{ga1fKamguFnX$$t1p1)|ZU(Ls z>RqL}%Sl^L8y|S0?1PwL1eG7uritg{+U*Gx$WZ}hmNdssN?4b|E!f;>YNK+?l`8Qh zsT4>`s>t@#i-B$<_yFRo-ue2DVB8@OMMD+XcAdm||lL zo1og_?e2AroNbQLJ>2Hj@BbHjDu(gjdo>({|1g3lPiH6Sb?j%HS@ zWC8(#z%2E49HwWP(YtfPPvFscL(vG2ZBDN%mk-*@-!H+_4$&bbigNa!Qmj-P5e}y@ za$no{Os(Bw#ok~GE#uoP7f;@ghS8+>+vUP&8)jA3N%_wb_RI8Iq$UG%RTJmE78C8f zi&ng7G|OAxWy(5x0q|t<7tDc|rgTZ0?L3n1_m!@@94IS$3+`Ig@Vg4f2EIbTBgi)k zCB{ivCH|I2k&H#9m)FK>4EBoU+I2WlpbL?d?=V2hi}Od+weMg66WeE$h~5vtg9;?? zW!~!krFpb((F1%8U!sfq2nX_AzWgFtvk_DwZ6CTHbx*$d7^@+jI`38fep}TV z^dYR@h86YM^b`1i{b2}-tq4O+LHFz7vC7MY8wY9d_M<*;-DZcZ{=p~3lg*A9Y`cCT z*@rzKCQ{Wmr)I!C$q_Lkrj3&O^f#};HLCN8GUXWuD(`Kau7 zZ*{2d+A=e#@xWJnd3$;8t<8??X{yV&=wQ9L@G8)6K|Xm^$xcd39ldogP7?k6g6s1H z>dO-^d+lacSJT+$W%U+;!8%#M_XhxN;0eN(7N=wux%}v%Teo)+PL3dYIi1;m z_@sL44w?FLL8byH$zJX$Q4PNhRA{IFv~`syZOPqf2lgQ#q<9o*nmR!L22-7wayot= zt4tZPGnhUlA!lmEAw?7iP(QcMINBIEUSJ-^;(=fOme~fXXsl{?^{_-bbB^j?W8ii7 zQV!&@xe*boRnzi>Cfy359m~`HHX(TuFY~+$-vEw_9}SNPln3k4papM=Y~YlAUDn9E z*?@5S`@l6ixXXGaqn?Bpz-@p3EIMVY$C}!o_*qUsQ~K6%wpj1j0-Hq(@m%CAUwJ`I z((lHT$J@TV-9xS${)rMQn7xi9y|symR&cJAf2%HE)sWCpPg09C=}r-%A!6*>eOR1V zE#INfTx%gzY@cw3fev9?DU(dqW?)&mB82>9|Dq-xg2yG0i6(W3@s> zX=?61ZMMJO;_;-KUYRk-50!&v$6< z$Q%!SZo}s3!84+*qBrXMbkBrOJKXx5%m2x6|A__3fb0*;kSXJ`AYq%&<4xuz6(f_G z(iV)R$2Ev9KjKAMvE|Rr)8>@QzxbO%R&61T&O*pRYXezaJu@oDA0F#KTqET>m`C;r z7jn*2BM8j!Jgc~44kPr)?2lZ=-PDYqw0fT_pO9rcgFouP}YAHk|+Ror2BE29qOKPRRF zeP41=uY#@P_4M|A%6@39v#QR21cYOgX;5Bar*Q5uAn=Hx4dRFg(>S`HhU~#-WVDdd z)bQq;cvy3zg*x-)`h2k3y29B%pe-;7qd|Bv5fsRZ#;#Z}9O%M@uc;)4DysVvs_v6GTZADZUL> z*cf}zU{P`GORK8b-$&AOcgjpVuh|fJsPSIn$CvY6v9k;Nw}9=hCXmmtYOJ^<0g(+d zv~%)(BHYwQq)ukh;Z}+F<=->dOY`QVDKm$n5vaU@n=E4N=svR!Kan+1FP**#um4h6 zpiH~%Hdu}mUPV){i~j6;p87%pbgDW{eVopW-z3YUo2tjD&wIAR-NkbzH@k^^+Npm$#D|SW;z5uibbZ#MC)}6&b#5HjU=WS%6xKa zN*;2qbAHj6GBFE$;{p^L8`&*0$5SCu_l^IwnlB))HU6I#V6I$LZPR7t{dP<4s5;*D z#xdNoyyY9U8$;^__kc~s4e;O>EDu^SL=6PhrX7|vYKf73te&F)UaX+*&oq29&3t{~ z`^cWa&;Ukar|LnO1-4vMnRb3LI9V85Ck8YsTlSP%jFpCkwbnURi?=cuUdy*mty*O@`a;r}z9=RhXh5Tz|uB#FX>u9A!# zu16!LOB9D>+$!mrRDHAbo-T8)#R6G%v}=ua2eLxO(XU{+_J@A8$5-pv@Tij8Y=8^;x&@g81Gpd)VZKG{5m9!a`&7vE zuN|%%2sE**@ijyEgh)ZskL_zr663uZ8(LFUn+9|81oCV(wR#MDCERbWUc0H$=()xW z_pd#v?JH#GCwKKK3xNc8^vV{9gPiGpP$YZ|ElfNC`D(@W`<@h8G{aI?S=`I)SHBn| zGp=Qis8XgL+eBAV%li_Ivm15hx;hq7hL$OD-8?9o_NqycU=l0;b>WAz>6IuzNEtVqB7JfxJhZH}W0iqH5+AoanvKb&P@j_~C+H!hw57*&Vg7JxsnbC7 zJ)fAL!ki8U4+b30wV`vf4iB*!$6+WnIQz@YPTD;EH}~B)Y7dS6r`wG0nif|cOs=Mq zmt>3vdxvk_yqSz?ek)?BGh*Qvwt@2?#`IdkjvEH$4XpxVo~8i3(ffhyj&w&4FgisT zT{<9Rw}sdk?cz{*6wPe3SPbL|`DB44HBd=T=TqIM6OAqCgE%K(oC_*%rkSwSpaHbA z-;SXreKNe#uEoO|7r2-Z&kSUKEF9vM8M;5z8l*?u_CQS{3p%6aS5lyA@z1F|JlzQZ z6qM+Nps5=kMEw|YUi^Xy=@ugTsi{{ zsK3FOb9jaE3RFe2Fb8Z|<=SvJfHFuNTl3655C2dUE5w;KKvwTsuVTJ*=hTMSzOWHm z7z0zSeoHYvPp{xx`g~=%jQAVUJDqJnf~gP|Jhn z_?iL+z*~*5VcSw8`Fj9Wu_o1AqG;ke%*t?Oq>xY+qsJU?5Pl^p=Yot0R(^rmuqwgvqc4;r+jd@0 zkJA2RFk#Y`79I4;8bu?<1DHr1mgg*8;q@IWu;|W{+eu-Ko=&C~4rt5T3>Fa5ss~|- z;Rm|9*AStTdLVA>G*1>=un7t-#TBXQ&p?$+#zLw2HxiMO$=jrG7=O?8$Ebtb#Hk{r zyd~Cp3O1u#Du6%V!VL@i5)!?mz4g3yWmyn{S6dL>?isUw+T-Q5k=ySv8jU3YPHWG{&TiIFDgQS=u zKI$l$DCGN<%t>XvUIzN&41eq({uH9?YU4*Iu3_^URqq>$vax0yHgroB-B=P&u)DJH zO7NW`O*I(E7Lq{FO5~sOD;;uJ zx#{9`%n4;CW#T(Voq@(kTz^%qJF@wCgJ}TrAtB`{@22h(z&1bhd24QtlRABeJgWy} zss@5&rP1rITeuuwM*&}R0%f{-%#HVX5-yTcl6P4xm3r{IUX7u0f7`XP(bbD7uuN1^qIAJ9j zupo{u8{hyP7LUJi>e-vJ-TnTqYi`G13WbG2Dx?O!_0?OzSim;OiFMN8LxMrxg@!K> zq|%m&)*tP=*M*!e9l*Em;a-&&)+D7pRCpkn(}2#NTuRJ!QVj%!b%N=7J!i!aQ8le2 zKaMHM6@fyaH?(ZsDeZmUhV-xZplebUz>uzf%L-iNDlfhpF^R_3Y(h-;`oi_U zx%~ zM<%xyBm&s8GFq^6C-<~NdOq>=`|_)xzI5}?0Z^t6+HpO`4A2E5>!5hmz=b)`OA2-3 z;{OsO_+m!?Y@2b%(AIAjF-FF$d=+JHKb{NY0ZY#kGa#?e#EH_1FJ zV~P*c^e|li%~v5PdKmqm@BqsK?gpoCf6_BhYi2XEM%^?c^DT#!0w2D;;m3N`8*?m4 z&55r{vz_88fol_5a=9rtpd`pQwlmF9N>uPegrEDf-%jAv>>I~ z7&j}UYXRLMtpGj!r#Sv>A5C`c526hIh%GYsa5Q#@+6-gXhqd4_r~F6T(psb9hiKdK zZ`)xp{3;S)H3uW4;P<0X;*o zA0)|ZKD{CcV^}XuEiu?DT~ry2?CmhS4`g)`nT}Iud8J@;-FN}cfi><<5N4+^r-Hn7 z-BG5!CV@NMrZnO`+th2Y5^YP?0&++2hu`@n)nr$tAV=0>f7HAX5B&{=gV7UD|F*(< zV3w{BDt+{TK6Kz})j(;UAy4YXPsZva`K5yLO4BCavuie!YWznrA1+mW42pl|E3n&= zqv!94c#m}0QICjzl;pr&*_hkl5C+OD`qUw~nz!bCF)#l*gSWAcsC!1}x&a`^%!Kp(inS0>0E&JY&(F_1e*L+$`2iz|BN1ANUhzXqbZ&brz?jJ&m9TDkcIlG~`f z5p%pTArIGa2WRsM)#%jP;22Qj-lrTC(s!s?@(64&hs1~9ba_UIoj#ZvjOS>l7H6K6P zSk*RvA8aj4VXiI-62)FQ;N0J+yt={dpgB9L1wd)?vNYe$_$YOzvUyB%(A*uGd3z0A zA^qY&+tkH+q_kD`C<|(t@bcsyzKeq`s+f1ccr|@@&|`fNmyC1|92w|+4~rY>RMXSl z1v)l^D(V7_1A87Hk^d2dOr@v{%-YrvrW)q#KrQ4x=BD&)X`?d8ujMQr2zXo^Ac3Jc z^x4YAP9NwfUiQmghgUrK#?B^79`qX^v8(mz>`YvosM|xN*j#^6ySZb@Y3^0AlCXGJ zcY%G{Phn$FN`IUcb3d3~*jkd?Hm>>{e?QgYCf|#3>Cp$nN$+4y17wa7j}NK*m^Elq z#fTiVUE1tARFwn06v8~KUa%zdoM z(uW%<7^rvDpo6@Nr}9B3=cSI)d!QPX@+Z}6e+>~Fc;C5BfW5`Cf5V}_O?$;}7|yOl z@Ouom{UTgXfi4nbhotjEN0A?gLDuywHeUO(`B2{YnYtjDpwKf4VOvL{GSQbgzc45WjGzkaRowGX6<9ja659I5-CyVw=HYK5~rLHs| z2yrAXiUC89PXaQ<35?Q*$X5*&YYxBQOm(l$JXz#M(^}< zYEN>Ji-E#Mu~P8y<#VUcVRbrR9&fPEzgYM2)%@q1@!{1giGIIqK50}2lznQJx{w^!4oXVlD4^eRMFoTu&JHfi8;TFI?CdAY+KZQKJ5D8c^+qLUqa`4 z@ZCR27<_lkeUHuUJrI?B^&MZ=r_rF?>J{&m_~QYPb&=Ogx5MYAFEd;Eq2quO1>%H2@9gACOZ&#kP`S1ktLQ9BmFMRY)W$WhEK4 zjb8MLYr{FDnM|;e+}4%Y*Cio|i(_j$7=p!}r}hM<2Z&<1U}}<0)iYF=-KCuJZv(LB z8AK((@)Fec(4(XH$Fl@}Bg zsw!RvoA;!xhlyW)oEyMwx{gwI;-q}ZciES%odDonFE}0orbgN;a{p=;+Ef~IPAcww zC93{v3FU2rW{l+^2ywvzG8T0(jqbu_=b5N?#g~+Z&Mp132RPm>d$&HD+Ne&rNPi8= z&418Gg4Vhzk8j1zr#Ti2YYFbR*|EIJ&7Sd*6^(KXPVoqglQaHZB%T|K|YpEf1D$7`<+VErg0UmOM>wF&G7vCbPuQ;*DZkGvLr zrpW^_MC9LRaq+ls%tOl}pN8|bk(<^LWWV5zK@RC#KaS=wVd9UJ6Qn`C)Q|B>kd$h1HY?@A)G}Hw12O zD0|^3vrmb&-c&@h&u|IQiu>vBJdkzxbpbq7oeXe?EAN3j+^8Bj7iZ{ZSIdR`pF5oV z3{8l*aS|;3x|;15KgPtNLeGQ3x;npM)TJze!uO}O^|pkRfRz+!o}s{w0DD}$PwFb$ zH@cSME+FIG;p=e@FSO&K2$_M#_OGP<8%wywq2-x3z`(Yg$d|-uIn)xF5v4meV3Z{v z-~B|SWyQ(Yq0^y%oBDeF`}|Gz?bf)`9ncIvr_NrD=TzVXfSzOLGJ0m8alnGrQFLw= z5Vq~IH~(s?zAZa<@rh`)Sl`F2W}_I*#BFFQ>I={T1>B7nU+PeN@;1DwKUpu2HvdbC$|`Z2y5?dmOY)fTHU~z>p!L~j-yB0CV+`-k z=EZ?L=tB7z1%D~KzNV`{IsU1S6YN->RP#@CzW0r}fJ|3ko`4wu8k93h+Zu?UPb)<-`v&30rLr&ud`9{k+`3*1-;07F_2O5_A@dhJ~YaB@#$Rgc>|m(HK@EnJp5z9^Zc11A48p(ZI< zeRq-r9kqIS)6-#?c!9m}Ac;yYTFN&it?ftHwY*=}FuJ(h^iqP;!wDL=)n82qKYTEg z^A&6!UNk?7EP0Vzs$NQD(nO2_6{ywPg0LCXD3G9Sk?@$ns$VLsRoao7j3iRB0!iOxvrhl&B|Ve{FWL?X|~Em{zz&s@eIyxAbo@%Vr4;{ZAfj1 z5FB{e1=3cvT^|3a<2i|`_Ed+@Y#-UH^A>lqp_PJPuY>PA92T$Sp0onja6u}9*i&hVc*k3mIZSy6+w5JUW7>kn@rGm!Q3#dDOua{ zB&7%$_w)?@PCeMf@@;pp0LSla7+K8Au6rdHKj^JXtce$svJ-Lhh_Tf%IL1BUkDjA+ z?pry1DgJm9{q&iXhX%usdZm_=)}Ocow^@NwSoZfU)N-%~*(5;PfDNfNxG%#5GNtmR zBo8}SemTEdE|{Ddsd;uk56@(D7>~BuB)wj@O%3e;H~18Io7z~>JAC$eJ~NigH1=RT zq5RjKXynMNWaE`yTgL8cGEk+jigfntU{H)!j zCV=)i?TOd#|Ad~P);`Qkm$6&cz z@F_7v1CJx?Jdjr&Y{;qt4fVA_)a0RHOnB@g!2Iygbi4*cQ;#z|=U66)Z;s$p11Mbb z(q)B5&1ZPthtzJCGRUbf1!4z5-*%Nj&0CVZFzzp#oA?cn{NlVgO8q9%I~F#SrmO%g z9Qb{#EGh2|#>-RgCBDOtDG0uH2do%c>Mq#>jkTMF9}Y9UD}%QN?|(#;7{IvCza9p$`EOq8<6saCbWjvoW5rU~X&;GPnaO1=v_ z4rJC7fP45x`Sshp2g2%JZuDkKzrirjnmX=5p5F`~Ad%E{7aAk;?iQ8c&Mq2W$ikQ=?9nXZXPesfl;6#zTjfE4aUDdd~pfFJ)#09JY$aIwsa zTb%xG^?USceawKOmbBzpU}Di)3>CY^VYkl7C$C?I-ZjWo9uRCxeWk%ObIF$Ri|kV~}KA=d({&2b(gvhQBv4<>3Q@d99J zswZoYFy4F!AvBMN9)tuvNQx%q@VEmnVc~q%_%k+EOYVb1U5Y5S6SjL~EzChj(Fm=I z%2X)&X3iXmL3j|qt)B0eJpYbXq$aI@?T5z#T1CZAEt7XQ5*)V^L$pU1cF&C_9g}F{ zfjx1xXdc<~fv(>EehI|t%|4sOdz2Jg8p8h^VOK#&htq`@FAdugnG;is)SS`N3=o+v zt@-2iF11)mJdpaH+WF18lGUnXCJh8?Gs^nX|#ql%ZaKP zhVQ)2<|0MqrOlq8=ur~2W$1?{3L6Ga9@~N~PNs6Z#07@ly_Dle+Zm?JYDwF=SB@t! zZ%{smrC*)Nb;a8E0Sk3@ptS!(KaM{6&@)fZMV1WbbR$(nioQ-5bXGjqR#+F5>avNi z_*MSjrRNY!o$T@@v@PU*~WK0tr88nzvJF;^_Ku3YXs$6rfMlxRzn*jz%=jXdbS zs=L}KzaBsB&-^E?*pNW-k+K))G##Q|RlKX_El<>)@kh9iw$A&Vjxi=LbK0<1Ovzp4 zACmXA0MC;R)SCfiKv%mCvQ7^i$miAz9Yb1=&FH2bF4ih|-PPp|qio$=FVar))*bJH zt&Lr{lgaL9sdM7`?S9D#T?Nf1WW`DK%GEh5?<=f4V!OtRC@_WgvIeNq6t%#+YHGjc zdXkXasJaI#vk4VW>m^1p!;2o^#+l=KnCu7Thr~!xEThNM9L|m!n5Hx}3yK?Jwn*laHtUG!l#{t zd-Q1ii_>=s`*+OGJpTWP`tCrg-!J~RJwpS@O4%V&W>!OHB-h9$B;(q9+>#`#C|gLV zYh_;hN(fnzd0l&CTrM)N%kQ~;zQ5n^f8NjgKJW9K^E$8dI_IhKypl)juKPZY&}K1y z;iJ|joTp#(P+t_+HS7{+@SbM1d-2WSfj@-q0dng0M(#uIHK5yeL%t6y023xuV?peE zMFT{mR^QDmynk{3ty6U#c`qg@?M43VY3l2!cr7LB#i^vS&x!(?UACe~!}zhEhBI!i zpl0dbYOa#iC42i&w~yJBCJS1$=LL>3#MeN9ft+Qb-@hq87NzG23J0XJIJ(*=_jG zPhM~=r_^>l1pRkMfYHn!`N*+xeE67#Br6eqduoKQQbQcm(NP0L7b`p259;`pk}aGG zZmzIT7;(Gf5UEGc3i;fmMpB;vwo6|HeDoIk7EJnBaCY6lDXD~8X6ef%{seK|f^rTE z&90lm`<-GX+*fgKqSvMflF7WNj1P=cMCayH>i|FNJOsNtpcxVDm2O02CEW55J)k;68Qq=lN@kWPVK{ zI)mw2pcLH074NO8VT#68MqDZl)03)bBk7DBKAyz({PP5Zq^jh{>kc|mO_OdxC!hM1 zuBnyuy(hHY!)6q@UcT>3a#-C>g!pDwTRKFAG>96dli%3P{G^nK}z!<#6v;ZN3s z6V?4mv5XV;PD}P07~r_xv`9RAvi4<69~pM2A#1~>Fb&-FH>`ptU~saco+ zepaC9iNwp8@gIy=idQ&`q}RXyWQgYDchpicDxQAw`>(ZPmWR3v5VkGvTqMQk9^0QEs&5r{ zX>5<|1W)5%j;VTHdZo)>M|Vdy>#*kZokI6$*AB(hFk@f~sxN?d-j4;-`4j-($c$|) zDeeG5WKt)1BBda$c`a+Y4}8Y>tf-9N5vrGMe)S>lr^|GG zPFhZp=4id?h7BIi^pHBtljDxf<=iG|?_Cul!RNUHJOly_uqP7uP<%?$lI_cP>!T{- znt{J|Pf@T6`|*WrG#wJ-d@gtX8?B+k;72J8s_fXBnI@k=xo*J^4}HQeOp_72bqr21 zm-?Tq_T#HDJ68cA?f<_P|E>a;6_O#4I@(mg6hv4gYTGM+A%*xFb;Were!P^-286W7 z;%i;Mxr(Qv)eGS`KWOwxKAYNkTf_L>)IcVL&7(hOhnsmdk=QG}K_{HQR$ncbTDa(l zt4{%0|6TY(;J+zu2n~P>@ys*DIrU$6qJzOTWa~O3ZL#vJ;tW1j^WiRUBSmFfbB|Uq zqK-DkYO-%fRd`)}-)^6I{#c!5f2yTYIP?2Pbwr>^S}yM}Q3Tr8di3KAJz8nayt;J#|{1PcyLM zh=xkeC;xW=DsCH&?L#+YUcE_?^N}9qmPV54IOQ^;Q`Qv-}`}ZAT2NYc%XRZHJta0R*_|61vhFvV%L9NyZYj z?C!q6n6 zZU$?R8fZUXY8b*UDo}_z^E!a}w-#M&Zru{W7mXJB(8Xu5=C)yWoepB|mzW$X-knqk zMSqOls#Cg*-d@m0hzl&&7M+dX_#5;l?v2OPX0B|Vsow1gTZusjP!zvNqLq<%{hbX@ zPd*jC2F8Zmil}zKDXyutD)F0a8*VX>wC-kMmq>T%EJ?Q8Svxg)`sLfV9$PGDEwtBfLP-l>61ExJIYA) zt1q`DB$Ym9jnWMK2~N$VRP-Wf;u6FDc~C%aZlPKg7B~JRY7F&CUrC)UxKD$qlPF(9 z`+@_OZK3VZpkj@^nXgvD{BMS8<9&M_Pz_Th4Nx`A9sIx#W@7fPlp|LvpV}Wfzm;E= z7Dz77+|dl=OAny>O)-Qjc@nf&D?hU5nYzvT(N46Bm?dxe&X?Jv{@Z27o(CZ1cy1%( z|DmgXXJ5BZ>M&EY^d2&QiZ$BxuM%n6jm#d&1%RO|st4U-A69Q}AFyxP)+2)ohFlad zngE6X2ptvdsH86h#DqSDO;sw%LAj}qD%0*-41J=PJ@!Cj09)dVvt^QK$>A&jow+QW zy5+H@d*;D@D^vfY@V3{D!78*JaqL$u@dR>xp0ksa-Huzo%}l`oNX+KVh+y1?!C&`0RpsRSQsx3W`i1sp!0(!jzb>Q43!3>C33ox#o7za{l9 zqaK zS|Re=DzN0hA^&hY){=qeUs?^wNt-1E_;J&Klu|)lqEAH>fogz6-G0s(`@|Af_XRh+x_;ug0j4t6Y~A^mmCpF)t%xadWw%%q ziPRn)?Y=QcZ-Q;gk7$nhWwbBh+kEz1;PdA~!X|yUzHVFa>q*X^Wh`o6Z`@HEu(%f0 zr}fOHL()DzQ?5kaVDoM2%(};<$^_X|M+PL(uk;OLd`LUl4ryeJ{0?QAzdz`^>WR6^Nb!67 z2(#C|sW?b} zqQ&6sTGgmbskg_&N`h*4#FifaQKUyD{Ym?u5lK^mTsW-xTOLPm*_l0uT}P?O!im-S z0OyT3V&Jc!@7q0$fK|UHh+yy*s&W`V*WmgbRd!f?rHp)G-RidgXyDExu{ou)$U_5A zwER1%42GC!mpBo7KYyCqI|}EEe%;CYlkwC1#p(wibU}T7bhbhrmgRir-u5oB!uZIG z!^r5CoUfR`0rv!Ni_7?ik~jnrE`h}^Q^Dak#M9b~SEpSwz`!O;c1~K^C0utUXGGSD zUxjnI-U_lYa zh^6dT+{3mpcdZrz2TiHL{7brNa@^U5ki4H@iN$ifH`w+%H3@S+_ zaH1t<(&|aC>G5pU+U8tIa=_3|%mXb=6HFU#;NHlahCCyrsJqBL*bg>*LE2J6L&%PO zAdlJ0l!nb{D~YXk&h0qUtcXWev>GbCn55u+Q;~ldQ zPT55xdbCA!@f1e)*1;E?{tyz*QLza``HHiSvUKzCsI-Kle?bJYc^}8VY9ry zg=}ORCr?1N%%79YJe&JDsa3>^DZaEY_-&v^{)>IHh~^bc+h5j%7E znY)D|TWl2KW!%9i{(RMIaldG%V*G#mXzfeUBzwYq7$q#bkN0hpKLza_*8Dgqlk=SO zLz`WHMTpP}g%H8u^F(Xol9V}#sWH!z0v5fZlZR6pL-tCY)F0Q|a==-Eg+ENCXh`4f zbPfD{=z}Y8dx>nSD*7H?^l6h;Hu^;0HaTH85&P24XKUG?`NIPZiyO!_Ov{gpZd?I_ ze$IRQHxGeD9EzgS)*nHTSSlp(HRW7`lFDJl=v};wGXBRJZr9Ac?bO6v4pJ5qY9pKh zR*F(fS~ttIT*3KUpI0}CFgvc9l1XJln= z?T_`b2U4klR-BvQC(#J`r&n?}V6nQmggJ_^?nyVjiC;%I4R_>WsIPiXw;QHpHU*5Q zNpoI`zsONGC5sMhGy97@b^Po4u1X~@*y%|7$O4^6ENlN%HTpnAd2UC*Xhy=9H^BC~ zCh$HSXPc>*)bTP-ivFCA0z_cbhWS`02W%iqWcV-TT5*qjKa}`=zwV|8S<#az^@gUk zm`Zv-SEZEjpHDu$_`OdEy-c_r$NhfY)$f<-a!(vlL8*{u;y^Ne#ep39dWXEG`Iv4} zFp?R?-Vn<%R@P{g@&32lkgKohiXPn_R(X~7d4~xgh zpd{e3N9)I~JIJ1d{&f_ihKKFd-!(H3D0}}T_!S(T`KK!1ehXJ^bzZ$-qbuCsHH!5( zFKVP#DARa~ezK)L)-L1L-bngQ-9^`TRA%S1kWG``I-TgBs%s7B!VXyy$>($?!ZA;t z*POWxNO9n|*L3M8L!}NYhK%qsMiCQ4XQaBb@x<59w_sKSx6VBpghQy`yPbRJ^+WFJ zv>vl**8z=)^tP;AlNmNlb-eB&6F5H}TAhVb&t~rL{@^Wru)Qg-WL^-uyUija!xj*6 zR+k|Zti+FCXh;YDOj_kd>%l!7YBxH)?8j|bP|Zu4pzAW%1gXhjitp?e;5lz|ru)on(;)h%WP3ik|pipsC5O%T`=2!Ae z_H2XhIEbceD`=uK{o_h!N1mF`Pnm!BS6|;=J;C7`+MRn&4y=9>&fEQX=C<@;k`ac5 z=Ur#Sx?Bk7;$q8lFlWFNJ+^09YIv@;1)A*K z=Og5f$xwCTiCp(^+eX5eA*cN-JA2z^DL<*~3yIjeCd=ZYPfO!%=B{VB!1co^kOV#u zcu_7zU;MOdx99Q7Plu*ow^Dmcy?}*x=IfsCj}0wU(00z^Dt#9JC~JrK(Ab=2MpY(V zg2$e)xG_h-X>_WRi?J-KO_+!WId{w zy^LTu%6<3Xia%#tBqp5N(6$PPMSH*1Y~;Qr$BGHvF=3YamLNyH{`WabR}0fIr)y( zmZBT{>4AW;Uxdtj`iB92_`AuI=cvt@-HW!1f6;D!r)z44D|MQ%y9^X3*Ad@Rul!K0T>d_3w#Juj!iis_Re99?vF6 z$F0kqc6e9;nmiRq=C>v4AJqKWUTu~Frv{=@%jMpyfun&x`%UbPdY0tqj8v@-i!DWq z4|k7^Eh^(qa$L93Hfmpp{>R^9?zUNLBtLt@Ra{)0{*X@PbXG1>VR8!Fas0bG>&nT1 zE6ua1BQM%W=Br!uOW$1rzcf;jLHOI`HL92V30lFglr*%zm|#5sN?{(8y-f?O9$rms zX*S!rd9vH+sT?~Rl1<#*RI&fgGM+<^x^os}da=mETeLIVYkK+(S+Dz&`#$(?AC_(Z zgokprbmiQ&T!^=k87k+7vMI=G5Ysq4oGgR9k@pd9>Q>E(4`#?gaXU5wsa&wa7MN5L zO|&>W=Off3CU!dmJ6tTTDc+y(7w%NQKUgbWZuSKRRx37Ok4FY9b{PjZ#q_0F2;{U9 z`s{wNg}m2gJ%J$H+2)9{vkewH-7k-~v+6otHw|{z4e^{yn!8oHQ8&t1-f%PQLuj2( zZN^z@Q{j`)+^k;c;MIGd!bH6vUd`^1$g>6SU9|~eK?c9~7xyL!d`E*}rt_?`mMuGy z>7o6TA3+Au93hpi8_zJ=q&_hnlx*U|$@|ex#+x9`Q~Cm_Jl35@k(4`y%-f?+3*#(} z#nzoh9u6nOpV9IPVIhmT8zNmUI?*|A;)P~z(1cBWh%eNns|<+N6h5iL_ULSoK(UKh zrMUaY0|_!HTY$Vq(nv(n_aT1whAp(`Dvq3u!PJK>e~g8>Sow<@R&`x7$*&v>`8dK_ zRGhr|_D5{n?h@kUoil%>c}-U-gcf3FPU0+y-wMm>cM}{`^LR%_wMz4i%^PIn?N>6qDML`7$+y| zM~*vQ`>PzLPrdvvT!nye#eJ6?(ibK(KhOCM(+K|jWJl#;I&%N4BUaf(N$xa;)hGvf z^+xJc^H%1n4^>{JUYy$7-9)p{CywX56l_clJX?)6msEV||9m7qiDTkrn&~+0Uf4*T_@Zqk=RKBSuE_#*s!Q!}`OBm~YIi=~da%t1t-)YcS@G2zEiU-dCY`7s zuCIp(=);{$S8Jr;KR3oHpsy_8=P-Q3WVFU2`fkIr&c-0RyYrUiHY>;s(2Y8zcf=6`RO-8Lns0(Mi7N<+TgWVIXs0p(LYwwYH(8uO8a&z@N3}p zlyC-`caMH%xhV)Oh+7V>yP`N-V_`MU&e07mQIhGFaJU)-&4CLejM=2O^W1Ka!7t9CK8f(Ct=_4VNd?*&~ETc1DF-hraa=PC;vyfFPvy1 zfBlGlVgn3>`B`=L@Ljv&yR7S{OD)RI_%RAP^TyAq=G=yHhreO3P-*k{)Yce;^SNhg zN;e~m*4-jQ|YQ6VyO;nZm`*Wd<_l*AM7G((@8u%!emKO&RtEm(RMHIeh) zY-=tJhuBA&O@ca}lFfK%^Wact*Mi=bMb=j%;P2PWk?8kF=>3I{rR8J%+5oWKBd^gH z{f4oRX5N8)UeVSSV0fbf>id_Cd@IL3ZtNINwOsq;!EDx+MJVVS&ty+6JRclI7tuUx zU^}*)|I=WSNBIf-cU!wU?a5y&w!jF%R|K{7f>Y2%cJSOw;JNi2x8&R$E;DM3>l_x1 zP%+n%%TnL01BzQ)2RX5!p;^7KA_EME+6RlnCQ!R`)x^HHHE7LT>vPhnsV9v1Ccuuj zRm9T}{vT5-n4o4J+UZ+Pl<;H`BWx%S@-PEwc0MCiw%YE-@0su4iQ)lUa#YH771FP# zPtS`9d|a@yss8M*#0ln|R?Nxi|IrMdEL=(4_F%4!=6<+-oR`@v@*|WO0y|L)VRLxM zZ3ONf1vpPDf#(HSV(z~5s!=o9%TCZo5_oX!#g9yyo0VCSH{XR>oh^0h`{3~PO&o|k zktD$I#0+MYBDA?EVY#}FH9HDKm7i((e?fs6WMI>Nr=e*arF+h~WwJla%6)k?*ZP`< zSI)jHnxdbOyXW$mN9j-9p|7H0)o$RM$W`6D!DH?E5sIloOmx$?*bUBXw5^pUZyw{| zCrRU?S1A0{WW6;xZC$?SpLcO(ier|$A#M)++OZES40lh{$5P5Y&yI~6uab`craAT z9uN_Gu=msDP)!lcwAbeWr(FSj%~}!&Q0o02`SCAC`GC0hGH88047;P~5`kkoGB+nL_9>*7+e>s~oi3Sc1`8Azm*?c(Z@vovq?m~iDRl>i_24QYErp>x<#LEQsR40fVvOt z=b4uVpQ>Gj0+rJCrg#@S%_@f`>#_YqP&w>)F)-s)?L&XJ$u#+z{^;|q#VZWDBl!(& z)40ZD!xa`H7Flx23c1cdW1c|zxkfi?ba@-(r%`>3eQ0-nFl8=z^sfAzRC53QQ z`tb8+$hUhvDQC&xo}(XU6E!VN#1Qe#AN zDR@_Rhlf9V)tA9%-W^&d6}2(hNStCWDSF|)W`)XuG5@Xlvs zFU3b9C%JyiklV;8O;$cx?dvD6`7ej_Rz#?YqMs^Li+@n=vF77WEebK8_xSea6B9oy zQ6r<&Unxe~V-J&hQ84;w5f#ldyyKup30c3Rbmud!Sf+W7%8X|Inbn6e`BE2Awk(?) z_T(Ezj^f&}_v!!uWOA?0d5=mQPqeXZ<-Has4s!Whry7uNE~}Y8w6nEhoL|4!Fx;A2 zLxcK7>7imW`xan_SV&?Xm^ZWEBJ)p}Qk3O6Y+phG!o8hK;`E0mYsqf8--<-xOyP`tS#m;nHyUCcH|`i)-TNw=B;k} zn+MkgYZlfq?0geM?L)89(4Ezdv-g-*5+&2M8mJ-ldl0+lC4WrSXxa)ey=N5XE5H}n z?TlnD$l`m&%F4{^+t^>2gWO=6djXZcSJ#{8ePZ&vqQF9^Qmk+MaO@g0BXtoHE@@@> zf3*NtyAxx**h{1L)^VlU-!_yPZ5H}3(d-fcpun%5f?}e;Cf&kUJIgK>e?cA^jYZO} zsi9%_ZWlITi6uY%MtO7>c;4x;uD|)eaiT+4OQvbmTddQ#!RlxP_uDAoD&SK0u^Vis zW_3(&F7a!&L0WR|nm{x+k zGCHiwLdQF5s3u6$cWjh)hIH@|GL#-$xvmxj5D-98@+?gg^h}IOe|*C`|}|y_c|8y(c4k zlf+oX2e)W2LDr1m%%?gG)-3x>I`$(Kw<9NzyQ(w|al4(RgCXv=KN&rRjQ|lZb@6og z*}T;MB0~TTH5CYvfUYbZDOdRnw|W7f{c@k*L61s7QWuS%a(8|L1sUQa-E>Pi?WFIF z*5{Q(-FguOuXgdU^72kmg9-v#uP6wi6qN8LQa2C8;u_!U^4(3PDO|z=pFlxSF|O{R9nn7Rs3zo|vL>iFUAW zU65PVzo@IkI6WwGruD!ui)%pH3_OPd)_tuVUk?^X_#WK5H@tEhL6MPE6 zaxX65>;4wOr-{wKFPjSJhcs?RQS>sK-_VT<>K6qD7I<|`3|;6Bt5sWBbOm|of}5NF z(a&hSKehoy+;v|1ckgRp&W4$I=X!$1Jv6ThUA zr!oaX+9PkCbw?W+pD8-%++B$M5FAcgzN25YmL^4Y#Ngv>8E1-RMop+u9Ne8u<@2A&&9ktPPl6&iU0kfqQ5Bz&ymgCnq zNv&?D0aYeGYhqnAAno}+@jX?@}}NV8_Koe=TJU~#Ld&dCni(EF`gv)$YGed z`M4Y83}YrlQ?tIk+pnKRX7=vwN%#<{Rg>D^)@KgyAfQ_-{3_xnRoM^LAppOqa+X3Puaq zNu#D^w@Rv@(L_68z*iI=wsI#$H+CBgK-7iU$7Rw#04AfOH#k%eX7z+enT%~HjLNOV z_Gg_N_K7GSQKr@DcVHYQzT%&iG5CX{f~KWe3bZVMnlI`R!;)<{j?b(&XLg&7v|Xh^*O8ZI#xi)GGO~)^*!j#^vlE;z4Lxx+9inZVz=XnH_z%h7 zz#TxAn%|ytwq?DQqd{Q~W{D=IbT*(uf@h}m&rNYL9$HfOa1Cwj0|1+u91O1{GnWJJ z6kaCU5Td^F$I1HG%`{Xt5EKa^%`O~4g+`{I z@kGdKjYMuaN+_>4=!U2a1Ml`r1N*S|df&30SCwW54b+haNvs*u(@(5~l+1p0jbMo* z;VwcH6gUXq!TlOyVdCvw9gKBVvZHcCNr(fqabzKWEIm$?u<(jp|14i4DJs&r_*eLh zYp9Fehc{Wfz7SLn%z>~8$jX)gOkz#q4k^eX-JX3QF$ft$sF5^|WC)&wZ0IV*2O5B> zoH}CVSG&A;b5ec??d@uA;cm7<;5EI0h0DfY`G%nO4 zRRzj-u|$OCr5X{dYOUno8B?vVyYX(HFI_2u*1pS~IcyS{E|)W927yZhYn=L|gG?l?QsmO=j*d3mC3islMUTr(TZ{_N%hd%CIX7 zeAG;JS>J{I8MsWHE0+whJ5rJOQX7)R0X=1~?$sjE#9A$x#IVLrKt zi1_58A(b8A$S>rXOE;TF#sodS4Y5!1Q^ETbRp3=O!ai$r)IsucBdZr|^9Hm8Q4jmF zBJpcZBO4zN*-Y*njJz3b33Z&l>+Dfd@B2|zt6v%GjkyqhHg}ng3}So^Ni@VwqqcqlCy7FV@ z`;@VWxYgbeYV$B`1b(ysxd%TP6G-Me@nz5f=8nE&EW&amNqYyE8_CxYJhq^?mJ-5HDJT#=A$I(ty_dGWo zbrlizCZSeOCbL$nS_)23Ne`V)h9DC*GIQGPX&luzjBK5Jn5y(1ONSL2$1@cab|A!0 zO~d17x!^O@;FWEUboY`?6%qmE{S#q<*;c}OaZ6usWY3x}gvbNn5)d4=f0t%>+g=v} za3asSr@9Nwh401LMhP$1kORksV`ILx(2)g27g^~(Xgu)@1u9x4SCOJA!ZI_S76foa`DoCH3y4NLD_!fH8JVaxOA5rFjTqjvz$NZLtpz&)PpkDt@}%tJ1To= z>I_0XHB?5H-C8$l0G;vO{APbTGA>Azok3-0DZTMB=q#a|zGevwb?e|}qD<9Y^7F5~ z8cU=j4^W`C3uqC|c`}8{G4Egzj4VY-OQud->IrSbL)Z`cA?XOKL9`@07xX6`l9&UZ zPr>gNZNV*AyqzG2ej2D+ez5ODhaBG|dTXyf&Q^4~bML@aWUlHE!wz;FGAK`w>1wXe z8{RKqfX9awa$rE|hJnny{T_bTrz8Ry2MEF?)OCa(V4sVdl!E1mVuQre`p|989(69& zu(Q=5~MNmY2vwQZwOy`Wic#2j@E&T&q1Mw{`pfDFHGskki z{CH_f;$cR?XvmG^6|?Lhr^i2fX8XJw+&0z$6&CWkQ|n$Fpkdc6)=F3szuR52PQ4!^ zct8u8D1g_x+;c_h=f?Z=?KKltqh@@pWqE9y;8~QX9G>lGIB`wA`#)E;=AXiM@qMJPK zH+tw(c!oo`tp*9_^|SouW9rHLm2yESu5~^=ldN6RD4yEO{TW5!%4*MzPpuc%cO1}k zQ1)5!ns>VR-AH8;Brwy-mLyWUC!2-@ofNY8qF1-LtJAgU5KR_Wy}eF;G;vsmc9TL5 zw?g_iEkq7-1;h7Z^v2SCo2(i2v#rF7;Z+bsb*4Gb{5fhWnpv~JrHi6XGhHC-Z=lIf zWHYY7^QYKVYk7l(umf(}4=T(vBm;PyMRIjd8&yLGe3Xr5CxzDr<)vP4T!pMfDBVR8 zr*V7029(DhH;})}pGt}=qhH3)EM&BlHm!krapee2(%P1=GD0X5)dIKDu^bRQXJW`W zYXmUA@?BG9x{5C^0-$Uk@FRs_k1cou@V<&K+yxD*o{DBa2Dc7{hG~K{rp@SRd038I zNVRDoCBAr8C1+HZulG7{LP|5}$Lde2)bl9&x_v-Ol{>7tAyqZ-UfO_fdOAKDGt|R! ztEjGV0mUh7-nR{(GV2{{IPn?TaR2T{{U*x8Q1VnUy=*KqOEcB@!=aI-+z(x8VaE|} zRFG;qcuM57YcT!`aCOd$KcRP5T;u+ZIDx!;k5z;C`u!tppSEEL!#rP==aj_p;3&s* z@gYd<8I8!^@y7Uz4_exDLff`;SNHzltD zI}lnWW?@HdrQNpt938LYw4U*SOhmh9gy3Ket2yiX?pa(bldXr|<+vT;?{s^kkSZso zJ4dw#4Sb{9vE8tWhQiu>pb9;;dQ8~Z3wmw0gPZGh{nzHLtKle zZa0!l;p>n~4B33qkpx-UU`sDTVXQPYoZ&CO52xZ-Ox%U?*aH{8&Z|%}8SV77n{y14 z>)mFwupRjd`e(niT{~m~6;DMnN4k4gp(}VCFSTd6eQBcFNjqUMRCq5#ILz z9BZC7V!WJ!=nGB?6`ar_Nq!S@rrF-4oxK736zK-jBICD5>4Ew_i0Lm6mYWgptRe_o z_O$<~f2CKNy8ry$-$K$CC}BJ*3S)B^+(HjR2qO>^xWHSHDiq$*6pV;Zpq<%c-F2d4 z1J8YnHn~2S0+D0^FR`%aG+s){gH!}8p5lS*UUR{eZ!3QmZzzBe|}BwU;mE*ENl6LpIM(; z0?gr>w{rXHEx<(ee?d;VC=9>DX)a;UkDpdFOqrpbzvv@XFW28U8w?6=HWbjL29$gh zbJ@Rs$Pnx10F0FHk1PUXOql;yax+u72}KB_4MeJchwTEctl_qf=QSGkj=L+@z4A2^ zc+*r~j{V*_2lraIMi|nrx?udYFU!QFcJtpY)fAw}CHtE$FMT z*8Ia8Btoek5K4dUUXb_9-B08`8)Pfswmv-Ew}{rTHXI1qSk9jtd*gClZG!ozg&b1h zM`-g5ECzRq^OS;s;dGgM8l-Mp%a{E*m%yNMHD0q0i}kHjP?9xQ)SGyo$6sIhnV6Xw zOHn@-5+t<7IeypP2XW^C8PwcFJ6#@J`W(ec6?y@)Z7K#Uju2@629l%d)!okjY!wMp z(a(6tC|}uyBnBOdg&5Dfe2l&JrVJF%d97}Uk&5%=f)JjU(%rPAJRAii8A9o%Vi4Dz zrvkg6EoGe;M^WR^H1p4U^*%xVMo5XGZ;6E7TRTz$o8Pwb6a>yQJ?zl5v0`*_t67m zUp-1}{u!$~MfT$bt0mi(zU?J|)x-r8?Q{zm5y5%81P|twURCA18olb}LwbmIdH@YX zfjQqWq(nl-izOST1TbG|{YV_=reda_`=IBk^Wh$qQGEci_i&k8Uo`Mb^KYz^dcztv zx|U7`T^2-WqYbEM9BjT}QrZHLsiowqW(KI2$4yt6c<+n9t3Oi+udlLSSCFK4x*RH; zj;GmMb3(TE43WGaS=1Caj60FLl=1N|p%xb;D6hrPQ0-=(mzG6!Q)|MEI&dXOQ&= zz*2|+eDe-Dh5WFmkP#Mivbt`mSep}}0y6Apo`w6j@*E6Fa#M{%&c|i+6Sp1SD&iNr-f6n!*jZ+)3RXc8$vPOD77;pUizg7iDY z4B!i8(v@T&Yko@i<@=`JFvS554&(gf*+ENzNB^x}q4Wr0XVOl~R#9X@bjD(i;? z6SnVxN(wMLP&<<8Ya?4z(|HjSb?CvbIeEWkg9hONey8>b1Kp%0*tBsMHH77tQE^xTPD44{LAfgB#E{SC8Cp;9rjI0S-S$)PBOoq9mXtpgvt=Ux zyBb_zgi7lXfD8ugdpU8qS5a#9^#{dQLgMMC$rm)HuE^7P*r7i504>rRaL5pG;Iw?0 zq4{SA7#13nkKp9c&U~L_`|A0b2&k{cYev()|2(^-Ivn7^e>W`v&p7ga=YVwue@+CAH$Pb zAG}mLk?9o*J}AeI9F=ibz{w^*ABj%va}S0jM-tPYaGXi{a&sEzVX)b;Pn6_)IS4peR#+WUB$pwhiSW1ncqKi7lbzWs5|L{SMf z5OqHR6pHzhC*y4BX+VFHD3m8}Aqkq~=O`;iJmVxCA25XwdGO)zT4+u*DGUeKG>$}b zu6QWh_*LI~U_tG!FCry9Vj6*qsu-@v?S2ira)qzxzH*QA14z7(l(5Y8G#R+L-JmNY zO(1cXPnn^Hm-bLlF6VP18W{b6ooa-Q9+XB?xlXblupg&4x#B3g6bC5%j(G_52 zRZ~j$F|-Xe+%7sDK*+0ON7NlgXx17|PF&+~Zf`isuiKesG#n7pPWFcNzP<*l#~DQc z^u^qnFh+tx{9D!g_y3GiKnpC*_F*qM8XD!{9*HtuP{)I`vA;I(D`xWV9topn4z?@b zP8Ms2!pU}vj(S!{%TJaE8QHcdKuLv4U676Lg}YQmxH7N9!#*ZRA0ji~b@Ts*$vlYl zhGjkUVR+LRiV;GeSO%32ky8%|f9tG;nBVoe0K{%JUi38fE_qB^+q&|RFmgM9=cIGlTBLyIcQpd zE-~N)-200ptYDm*`XHvqTu~WQkB6TK3u^S_j|)@GC9aR@$x>0tj{+qz@4hP~!UjAJ z2kNb|)b9D~-I!rehhiKiZ=NJIE;#-zu5@Sk`^Sd%s#SH_N7*RX(cl6yt~=uz=m$r& z(U}+Ph!W#j|ENCe%Gv!A6a6=RdwMzv*lv)|k&yS6!*}{g%XIj;Phge@qc)nekyAXl z7`OfsU$Z?HZrtNeW6}ZWKIsef=Mz8um;ORY1;{ztchRZA@lM$pq3Tpzt9$)%y7OZ0ROmjkbQOsw_=*Z1@4WwHhqsN=3j6>>uTvCt)A~UaGo? z5cmw@1rb>ZuW~^%S1eP3W;;nS@|vUE8OndILY7k+VtkO6I5M@@GxPn6!jscwu!Y24 z*`HK!vhfF@Ll1O>$2&jM%L;1cIcgz1v35*AiY@7ju&w^Z`DctS5KUGmPw_b$b&8}bA;px&+FW#`wj!AXN@X0 zXdp%eBvHx;aO4g2W>wiK{nw$g{(u21L!TT4fOMj|Doyr52t$7fNH@_TZ<}&G-z4Nw zx|21rM>8W8s6F6f2N^Ec387FkfD8!@Aa&~4k0Dh66o8i^eb0{oCN_p`h+Sw7`I}w* zzM)e$mkfF&8#mtvzxMQgWp$`bI1HN41Dg81>ZDarcwxQ!?^)MgOuM>BdjWCfYkovI zQ1k@+0$nv%M?-uD^MJitdmE7dDKGp`$Br(T&DiBCDlV3ddITNmk7Md;=68>QjAEsh z0=g!IQ1m^Z0S*BJ&r9Wl-sMg0zK-rixi=j$DiK|8$1RdgL^)}~z zaEM)c@wM&(*qq5rtfE}-x?b_04j{ofOo1-yk=NM0_XAnPk>D_+D#EiTACMKwfcoNU z1$;Q?tg(O?nRm(2om9|UbY;Qb?7yPM7CZTyGVhbHx-lBFm$3nnuPg7-LXXuUzlIVA z%;pg2-~Decz-wa2Q;sg^c zL>9RA{;KPa%ikw^x4UvSWZ&*>9FJI(x@m8nQ7vsRQzPn9pNb_ZkG@`AuATm!PQT+af^Pk-QtDx z_85;7H7jJ7AVUEv@~@^;R3TX-2_F>|JV{86##GQR?Y3#M;&^DzC zIXAHvoJv{sax3ZyBG6-12<2U|ybuGV<*+f2A$2Hsctg-F1C1*0!(?Ky%1C%=3X$on z;R5Pwy!bo6B=d;+e`?aN2xOd>)79NzdcEsy7op}ebkj*LGO@A&VI9-7ev7i{u#o#h z;>~|{fDG>95K527Pf6At@I8uTTUBG`@jrLLjZtXZOGBW_0feuR1#;!QPI2Jzq{7tN z6>>=X62c7Wow#$C`X2j|Plk(|3|aQl0cr!cfsP+S#q;`ArEORw^;3R*ysTh;EUm>w zgU3ZLl-QK-ZhC_IVG*R%^}=6y@@WQFfHnds-L>C=^tmh8GLr2r^x|M|u#=@l9lm6{ zppQHniziq`d<7|f;eTS>i_CL1JSxjKrIvBS!%b)!$oe!aB*>EgbPKpQc@7+=c)|pf z9Y$W0*9p=y6?* zs3THzqNI)9oXi}t+j`Lrh$;P=R)0i2h~fSxpGvYl06?wWn-m|sh|oR_XdaES)axEU zoIJtEU6wrd)^?;vOaSQlVTn%SM{fe}FM#?a{Kz0Gt;`JxnIKOKf>?L{2S+Fy$Xx|A zwqGQr%JX32xZyG?(6rBCaYNLQ@)bf&Pwk0Mav|L|n`4s@nJ4V{rMHS5`J{`hE0*yt zg2`}aXVJ7UKKh6^jrAEE@(N?Y{HAY5pBCuzz^0Xe2~2_Yq3>VDWw;j zrmKQCC09jJx<@{(1tIlx$biFjCpO%M{0vK6$vO@lvL#pbeyz7R;RhG=Rd%k% z=*LDQ=y^G1B$Op_@Q196?QDW=asx|=PjCjW4E73y03uYTUt7;n00;u^q3Ri>waS)D z7FQvl%$weZfDu~=GL6nJWNE!D=9q{l_(V=v}y)*W6ttL6M+3J+BbQ1dpuz3;|DlV$P0a3UDg0ut=Wt+iF)Y3Zt} z)6e}9!Y`51E0r7j<-M|==a*RU{8%SYQh5^^t+O#YVB z3-yxS*ZJtDW;tKp8f)3V3eq`F_YCV}?yKsf>W6>n(lv% zypb}->m0q1n<3M))PDZNuR14fUc$>;^2q$?7HVf zNZC#Y@M?YFC>>dwF0cyiaC_9SME$tmFkH_Wvb8JIoU=j!`Q)|Lc+-piTKE^jNxxfh zX|(0L^BRX<;f)tzCFBhG@%-N!1Q+y{%%eIcn;iG~a?!7oll!HZNRHFsT&qcg6R%d4 zVXggm{hq4$C%P>f85!{wLr3@qjy_GSei|JS;|oE~=jX^7@#d-G;nqOWT3ee`r4ElZ zy>g`BFV27!eUD!2s9PHEXwft5%=5dx^T-31%J~F+dwYy>+Rwx}?N8DsMvKrtqF1vz z1z%V3SaWAN$7C?t`$p9-Z_3`qL#6#?h+VYlsNga{pL1Bs_YW;Zx{-IRbA!1T;xzB@Wu(aYQ><}m0+AcwV*JYP@>gil4C$eFF>rI4R;VQH=I3u{)0Qi%V_-dy|3-kNO z8h$tw#Tn-Lbi%llQywBOKlDNN&ST1ir!A@}iv_Jw+KzBPwK{b^`5y1O+l!DpKTiwIbxBc} zvO#>6d2DLIZ0r09hrqEP48JMv#|6Jj<4lFSU3e5XHJCT&Rhq+Vc2BPbfUVeLP@j9> z-ffwb+_Z#koo^`%{Pub6qfcSm8lPxfzY;~;<2`|oJ^IgHaeB(XZc*L(mQllg) z_lxOvA! z;mHfL0)6GKZ9^~AJDs+cZl0yKGtA@WWoNsi4v{FL{ zn_cl+6}9uvaxScO92m8Qg0j?}3Uwhd6wLGvTef(=I9jy-$jpwA8&~5cFB{GawH6Db zI31nmrF-U5#N0#DD=gQeYFNf@FPvsjzdSYo}6m2qA~_RUF; z)o4e=sJwnvp_tT{5^n|9?HqdGECiaE(Ja{32FJAT^YLi4+1A~4;GBFLUt4*0doPcB zZkCQu^@5)7?$heVKinK#x1|>F%4$vdKI>@|7;okgvQ2C{I-6P}$eSl`557J=i5;bZ z=EHlkxxcDFW28AVwqVmH3+dYH&V$rI7br98yty7xcP^qk=$#*YnQu*O0z;%I>4oO& zeCBCUdz9v|5)Ig#Yh#)W+MTgmcfGaMk!b_fdjO^jB+72 z;${DK^mfDj=+C*ss*1=x@UPUE&f6!SOL&lzq3_iy7G;&XPcvuoSw?){^da=yxVb~U zDf9*-6JkZ9OF}4dEwwP!^etlvzjyN88zvQukh4{D=>w5d25;aX?EJOJQo&flcmPJf1x@-OD=b6ineI>1g46KpFDQq3-RV5|MZ@_E4?np^TXkLCM4jXa)AHkv4K%ITlB4h zAH9!mKJFkgCdY!R8v4Ve>n$7;kp)$+pFCZhyMau>jp*?kY71)QH_mf_gE37B{1R8T>azZ7bbX5T7o`85+s=Y2 zK@NJ$aNlzYRAXnSG(uS^9}p`?%mV$L_U~V@?}dYvD0TBi(Ww#8V{4b7Kl&5Xjrtoto%H;h zPYMioyzJJ|f_q+1J_{@UEN8~WGa4>ddP1n=QP${ZFqUw6*;f_Yr=_}0o0eNF_zoIGPh$sMu$8=o?vtCF z?br;JSm%CiMNkiIB>5VWAt*y9!>?b&Z#RV?*RSk#_R^H$cNm^k)X7cVJX2-%)9H;% zdy|^f!7|ZM3c6FYX{qK6uNzp_nDJ2)ku9WCKqMQe#!&TJXu z#)s#4^G)xkF$A}J^GH0p)4a~<=BWrNs;}|LNXq*?O(0pn2G#;$;8sAVL`^=gsPzuU z3|>XIH4dqk(V?@ov`<~FmJZg)SFj2gfZUe7eIJe0>^IAK&2d#`hCa;Q*dV zMT-x#JhB+KOp8RU3R`%c(&Zdnw9j-=WU+tOSTBTkE3m91x@FX>+n(517!*Wqba^t? z;oY)pS!ebLlujTN3io-S0ms+f5G@DJe(==(khvcE{l5N3)ez{SKUt6qfOC93KkMAA zpv=x%1z4K;M)r|_Ez}PqPviQA*#3CfEKGpIQL3=_Pwc278#vUC{_LAKj1Ol`dqG78 z6oqHviq5%J@wt=twM}sh2=s(XH{=wPW~CuHcASjNsb}&uf?rR=ZnvR5TQhqHrwCzxiMRg@uBM}aen1H1C;(IeO%vi?26a# z>ZVJF;Y|;E8{E%A1cmjVcq;(Sc0UN|WW zJHB%~-Q2#=X0O}>TjJrgaWAjT?1Bl-0et6N4d#uu)1Q>Oo(H5kUSvxkvs*j%Kp~=0 ziE19?u!qgyh(5qKC``0V?Tg6WW1J3SnXZ2N&f#23KU4+7Y#MmB*!ixnjRwT1-o_&t z9HYLeYuu3s03sE6Xm~hX0)&`}3OAt|eU;sQDZ8*msQTJWg-hs+S4+(;I zQ_uaS3H}3SEw!FlH`T1$=Q3_@c0opF2sq zW)7R?K{6K-K#0x`5TP6U2x^@(`p){;-2C*Ri2z)94b`tm3xfY$bH9Jks{9a@VmJ?# z-QJ;hL7aPoHRbcN*w4i^Lvj+(YOoO&v2uRugqz(~QC$>zWSn`CKnMReLLOz~0d0%s zWC?q!8jV~{RztTkdJnxaY@!`+Pxl5F2_C#5TfigTQfX!*@~Bf+M>qDP-#Zcq*SMUK z5x;YnRbj4tU}x$}uur1pC8+XUGH69)QK%lQH1%`vEthq=F9x3`{Dqn05*)rn^B+yP zZ7^~j7u7)^c3n)bWGLIFP=wrWkv!YoTl$ecW(FwML4jqEwC_& z*I#`H_WrVK-w(S}csp_8cEMpdwUtAe_I&}F)5Y&j4>1{*Amdt_fNiZ?E@fIaNmgux z+}=yFVlE?6=#=Y_)%yz*Z|}g(x~<2%OCS-c-lo#E}Z}c{E&g_yYE+pk02B zJ`FC;a05$0eefZFK<%TS41fB&o%J6L0dvthz%3=V+c_(*59kDFODU%)*a44!(lajQ zc?k@&o(TRqDg_1KLIa?^YyglkRR4Kj1aUU_?GE7hjsurG|62QTIdC2Uz*EQ5YN+Pu zw@H44>*!QcBY$QYPmM!K4!H1dxNLj)9ce*QnaA4u()@PI^UZrekDK_us>4?C&v3N0 z567y&49HL40>VeXnXx4c z`_paM(XQ9kuTISQvt)jDNbAuyt%55cZ(YA-eNiHipW?OH^hlH&n6PALp0nkX>F-1=-j`$vyd0gon+rFjT;QiaxUgD z;1X4YgXLD!T{leOO%vy> zaEtZbo3;1lly491;Q=Bxe@XP8RNzic#B)9>a5qh`Tt0OIWkT^=z{5vs$9{%^7gton z5;R~}I5GRV+kON}Te4p>r({C0&NIUg@QllL@2U9cJL?}bu)X{jyD!i$q_JqI!QZKP z0naATv-n+(FT0oyn$_xZKXn>jOLFF-JvtuwT(xWm?xf!v*5LFnCzEQVAY4&-0r&`k{Dw8WJMqR#Q(N#en%Bq>*(1lp>hiIfi`B#@JJQn}_w%6MJNcIVtfEirl69XSg(Mx$m^ z-N{i6L)r$Az3Mw2SDESkE-ocd9#2EJ)(93G8r!K3fKL@rYR{D`bn&SaOX zv@>4P&Z|{E@%;MW=VcToFP&=GHYcz5SMHeA^mu3dc!%`+otU@#@WeTbd0X}+O&z1} zKnZ91a-F$+Zb{kH=UJs=PXhmM9Xn6gMJ8lv%1KY!`i)DlC^ssqD2 z+)ukw=rDD{OP`0H6ndl$Y9EWlD z@F^?aLc6Rv7a7cvZwX501>=RB6@kyP?9wh?d1sDf_mxqE2R%l+YA7Yx2d#(Uwe%)f z>N1Fw$ z?!w|HPPV@41SH0|t6Isl^Q8`!IZA!kVxC9LwjR$`+PDC7&uQUEup`1^^Xf5)*UC8e)D5!RnG-(;bLGZQH+*=myBFkd#X-ZIcJ3b@|jTF6H9j1 z$uEfQ%Uz|23}RGsoe3t~20aW4X=-6X>B8~5fxCLPb}3lrV?j%W3v5x3vTfqeqegQTTii*pLw+TGf3Kg#QdHy!P+XbY5y^fcE2z> zTX~}R0kG!`q@H0lv^O^+o!)4pgw1l9GC%6(-!#S?E}{>Ak1SnHe=|CbsJ0a^{k@LU z@iT}tUE+s=U6+=~F+Kc{R-&6R=(YhMSZp<5Jfm*3Yn4Fj{p_PHjJ|IM~9ZWVs z;C&dJxPTS$Qw&b4JJMq0P+FaA-AV{56aDILNvk{Bdahf6zGxmk#RTv5n$F%`M*3wp zgk-<_khP?HaupNd3&gDxPRU-unbTi3-*rrH8f6J6CbitjM*Rt zYd~5T@k#=1{PNtT<(R5o@K9XzWZ{rGr5nq3BwT@yTvgoo*onZyw6hfL>Av~ffB!Ra zI0&;0wztU)pH%ltAB@}fmI+l#A@{c<2e*GB@E{9#kY#RWW0%S*$X2zfrn`FJ4R%b+jE?wGlaQlyicc2bF2@ zc9YC}04o>^!7HiDNzBp%<24?9i2we3aXMk!gRyOYC1sC!!E%Q^YF`jNsk1^J_z-Sr z0PjPqDSYJQ4|b&_a*t@8b(2w|Tt(>8%@_@7G)9h-e)x-m$phn+s(h&5xpnN9#a?Ed z7&wFoUzjfP=U5-(=0fNl6KPsyC14-B8Bz^e!npTyn-)K>C32c7HmH5BSeVmeg5;R+ zx?k~nMk}KnpfF<*lF%yydk+tHk>folRD+3G4ESn!lbG4>M!Q}KFC9Tn>4jZm>uRgaE6%G_ArpO(?fr_0|eu8 z3Zm1^;zlnn_F4A<*k~=bba(z}D5`sv2Gb}H;dH%Q!?tJ3TF(+%PX{yb#(v3oZ*U|Y ztV4=-Oh}z>ZHT8VH|J{!D|F(a-j-k5>bx3zi$o6*AIef;aiwNeGJ$43nbu)&y4AXr?7Y{N|HZFi&)x&(TX@QzDkC*ti>C? z{`;H!f|jb=L$#8;Xvz6OiZC0qLIk!v^Clb_Ln*TgsE$cZzw52gz!K zt48^oo77Km^?qz*x_u~gfp1}Lo54Lh+0>{ifCsDrgj?(SP|i+{Vz)@v1nix7CH8O; zB6^*Z8hX^;#R+_j&>H)0c2qgxAbbf0cvD;tfMCDoMeD0;U4>@UxwR1x>TVh9J^i&Q zZQ=6XU&4#|tn~>HLH>(qqE%ZbnBBV#X-90^D)gi@fn%d1EtcZ>yRMB17C*Cmq zXsEQ=^5QBiFmnifhXNWX4285fqc?SOezMl0pffr`4IpknB`;EaVfS-Sa1tj6HvmqKnY!aQ!%+Kg0zNIckX7A(26dQuz|6I8 zm)RZ_cYO{h4QCe;4o?D(R}m^VW=6zZ4^2-U`L1*JJMgOP6A79wBjl z=j*q3^%&mpp7(Wi5mI=uWnlN$vX1XtH`MFnB>~{HZYAhbd&1OB#te6^!F+|NwJrNU zq&z-)5j%rK?2AysMmbH^o))vSSkSbAyJ0+CqdJMs|CH5M%+LVdx=v##=XTjb40wbb z&`^H;4oO1oX_M$HiyRtV(c-%1N#YggwA`P-p6qdX`4%#K_;;`ilESg;52yBLVScBO z%-E?rzFEd`gX$`*VFw%uWF@#XL_Me`t;c$j-^-!_EvyYHYZhS4x00A&ASU{35S#}= zpq9Hh9stTSBXim9&o>-f<3LtwOh(L@wK=<>MbV1 zE3Gpm>iTpYz7xympMl?8q+mMYx0*ag?@F?#BWBq{kE#+dtjkF-vJ$?EJtz1Y9mygbk6gL&e}OIZav-$* z?41mfAq7Z=G&3<2G{suh{Wdw7DUOQsZ*{572sjbvz?_aps)x^E_OT)byg7OZ@+B#^ z?7m{iW?FsOB`1G^V4rkS=`G(V=uz??D~gb;n5BTFQDo==A&ufBg7RgP{d=)$Y!4y3 zswa7i3&#t(n-Js8e0;D`!2R2Q(k*g;z{eNuGREezSl)-GSc1lm6N|TY)IIyX0LQBT zeTbf|o{4Eb@S2>VD5)qoDE3DD_<2XhLSW-?0t0swyUp`_o?xor2gm?(cjF`bWlrrJ zyex=iFP=!&q06rD!K#wd3!fB7alGsbdV5~H1xDu>$t{Zda+-&|#aR&f6N0>&gsoC+ ziDu#d{y-xv$h>$fqOUMPP({ko98%n+#|QrYJ&p5VRFB?5hb8O_k9UrZ(B^>yk$_bd z#7YfI9Ip}s+7UBQgBU@L2eX6-yFX3jY7o{88`m}S6ZotmP=M4zZj64HnP7bd_YIL+ zuo0Wp__fUo2^qRaV4$6QFKvc8Gas1AK%L%sqk9P6A!T;#C4A^8`+q}?-2f;;Y4RjC z39XBK|LH6ZI(GO4euED`z6kRUD2Xk(P?iiH2_m8LlLH3vUg}{*m;wSBbn(!g`^RUL zB;krfzsrWSu%MAoUW5oKkqkZd>SaG+WT^K@QS@#CKDGV8sR2Iy@0$(;(ihc!OyiW8 znh=m!ft;nm;%1R1W=lmI5|5cWfDQI))@>}^)+Ho-3g)4C+E}_3ZKNMQeE0zN;}BhM z!g0h~yHCY8yVwsH;I1UbGn5h$dSb@iagRH*_rm_>4cO|?4-$-zENzr)$J~~potgW@1G6^k7l_c9Ox7}Rpi-)leAe#jq@bD61d0yXH z=mLzcs7Ws3eOL{Nl7G87f(5(6?)w*=q`7xajg(&f!|l2cb`_}iNS-dLkg$owHpkkQ zoWTi_&3jvfiYUbTmB*a!IA=*mwS6p_uaB_XGcKs}1p*Vu?-hn^=A&Zh zDsr@H6>@!wVti9i2^@k!mYLn3bgm<*EKiKcV`+##&zL@O_lfYFkM)tQY`l^2e~S70x@M1tf=t+Fkr$THxXc z)2$$

5{)%A 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�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≪TCQ-S83`CiL+erqx<~#A17-H$~Klk(R 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 literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/4x/starlite-logo@4x.png b/src/server/app/web/public/images/4x/starlite-logo@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..f94727a4a7441ef252a6a84376b9161c3becb455 GIT binary patch literal 137868 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%0Dvm}Z#I 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%0Asm{n7c~N~|TQ5bbu=L_E1f7zpnR+T#iO5KLsY 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%0D?*Pw0&Mcz8r0-eN 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 O+-I_?PfMkrzxjU(Z$@qa literal 0 HcmV?d00001 diff --git a/src/server/app/web/public/images/SVG/starlite-banner.svg b/src/server/app/web/public/images/SVG/starlite-banner.svg new file mode 100644 index 00000000..bbfc8652 --- /dev/null +++ b/src/server/app/web/public/images/SVG/starlite-banner.svg @@ -0,0 +1 @@ + diff --git a/src/server/app/web/public/images/SVG/starlite-favicon.svg b/src/server/app/web/public/images/SVG/starlite-favicon.svg new file mode 100644 index 00000000..bbacc0d9 --- /dev/null +++ b/src/server/app/web/public/images/SVG/starlite-favicon.svg @@ -0,0 +1 @@ + diff --git a/src/server/app/web/public/images/SVG/starlite-icon.svg b/src/server/app/web/public/images/SVG/starlite-icon.svg new file mode 100644 index 00000000..a1ecc2f0 --- /dev/null +++ b/src/server/app/web/public/images/SVG/starlite-icon.svg @@ -0,0 +1 @@ + diff --git a/src/server/app/web/public/images/SVG/starlite-logo-round.svg b/src/server/app/web/public/images/SVG/starlite-logo-round.svg new file mode 100644 index 00000000..6801cec9 --- /dev/null +++ b/src/server/app/web/public/images/SVG/starlite-logo-round.svg @@ -0,0 +1 @@ + diff --git a/src/server/app/web/public/images/SVG/starlite-logo.svg b/src/server/app/web/public/images/SVG/starlite-logo.svg new file mode 100644 index 00000000..fecb91aa --- /dev/null +++ b/src/server/app/web/public/images/SVG/starlite-logo.svg @@ -0,0 +1 @@ + diff --git a/src/server/app/web/public/images/Stalite Logo.ai b/src/server/app/web/public/images/Stalite Logo.ai new file mode 100644 index 00000000..7e2abf7d --- /dev/null +++ b/src/server/app/web/public/images/Stalite Logo.ai @@ -0,0 +1,1178 @@ +%PDF-1.6 %âãÏÓ +1 0 obj <>/OCGs[25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator 26.0 (Macintosh) + 2022-01-30T22:05:59+01:00 + 2022-01-30T22:06+01:00 + 2022-01-30T22:06+01:00 + + + + 256 + 152 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAmAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A5T/ysz8yP+pr1j/uIXX/ AFUzI4Q12q2n5g/mfdzrBb+adZeZwSiDULqp4gtQfvOu2RkYxFlMQSaC6w8/fmhf3sNnbeadYaed wiA6hdAVPcn1NgOpOMzGIJPIJgDI0FBvzL/McMQPNmsMAdiNQuqH73yVBjbv+VmfmR/1Nesf9xC6 /wCqmPCFt3/KzPzI/wCpr1j/ALiF1/1Ux4Qtu/5WZ+ZH/U16x/3ELr/qpjwhbd/ysz8yP+pr1j/u IXX/AFUx4Qtu/wCVmfmR/wBTXrH/AHELr/qpjwhbd/ysz8yP+pr1j/uIXX/VTHhC27/lZn5kf9TX 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 xV2KuxV2KuxV2KuxV2Kv/9k= + + + + application/pdf + + + Stalite Logo + + + xmp.did:170fcb24-3281-4069-8cd1-9a60ce357785 + 383207c0-66f0-4dfa-bac1-adb22686c6fe + uuid:ed54e0b3-92a6-e74b-908e-6676d57e99e0 + proof:pdf + + + + created + 383207c0-66f0-4dfa-bac1-adb22686c6fe + 2022-01-22T20:37:47.037+01:00 + Illustrator + + + saved + c945d16d-718e-4ad0-a2f4-e657bbdfbc5c + 2022-01-22T21:53:36.522+01:00 + Illustrator + + + saved + xmp.iid:1129f950-cd3d-4f19-94f0-f8cb498144a2 + 2022-01-22T22:00:25+01:00 + Adobe Illustrator 26.0 (Macintosh) + / + + + saved + xmp.iid:170fcb24-3281-4069-8cd1-9a60ce357785 + 2022-01-30T22:03:47+01:00 + Adobe Illustrator 26.0 (Macintosh) + / + + + + + xmp.iid:c7dab509-ed6e-4278-bbc9-71d6942c191d + xmp.did:c7dab509-ed6e-4278-bbc9-71d6942c191d + 383207c0-66f0-4dfa-bac1-adb22686c6fe + default + + AIRobin + Document + 1 + False + False + + 512.000000 + 160.000000 + Pixels + + + + + Verdana + Verdana + Regular + Open Type + Version 5.01x + False + Verdana.ttf + + + NuvoMonoPro + Nuvo Mono Pro + Regular + Open Type + Version 7.504; 2011; Build 1020 + False + .13596.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Neues Farbfeld 4 + PROCESS + 100.000000 + RGB + 214 + 219 + 225 + + + Neues Farbfeld 3 + PROCESS + 100.000000 + RGB + 23 + 28 + 40 + + + Neues Farbfeld 2 + PROCESS + 100.000000 + RGB + 255 + 213 + 128 + + + Neues Farbfeld 1 + PROCESS + 100.000000 + RGB + 255 + 174 + 87 + + + Neues Farbfeld + PROCESS + 100.000000 + RGB + 29 + 36 + 51 + + + Weiß + RGB + PROCESS + 255 + 255 + 255 + + + Schwarz + RGB + PROCESS + 0 + 0 + 0 + + + RGB Rot + RGB + PROCESS + 255 + 0 + 0 + + + RGB Gelb + RGB + PROCESS + 255 + 255 + 0 + + + RGB Grün + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blau + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + PROCESS + 100.000000 + RGB + 193 + 39 + 45 + + + R=241 G=90 B=36 + PROCESS + 100.000000 + RGB + 241 + 90 + 36 + + + R=217 G=224 B=33 + PROCESS + 100.000000 + RGB + 217 + 224 + 33 + + + R=140 G=198 B=63 + PROCESS + 100.000000 + RGB + 140 + 198 + 63 + + + R=0 G=169 B=157 + PROCESS + 100.000000 + RGB + 0 + 169 + 157 + + + R=41 G=171 B=226 + PROCESS + 100.000000 + RGB + 41 + 171 + 226 + + + R=0 G=113 B=188 + PROCESS + 100.000000 + RGB + 0 + 113 + 188 + + + R=102 G=45 B=145 + PROCESS + 100.000000 + RGB + 102 + 45 + 145 + + + R=158 G=0 B=93 + PROCESS + 100.000000 + RGB + 158 + 0 + 93 + + + + + + + Adobe PDF library 16.03 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 1280.0 480.0]/Type/Page>> endobj 20 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 476.0 476.0]/Type/Page>> endobj 21 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 22 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 476.0 476.0]/Type/Page>> endobj 23 0 obj <>/Resources<>/Properties<>>>/TrimBox[0.0 0.0 476.0 476.0]/Type/Page>> endobj 24 0 obj <>/Resources<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 128.0 20.0]/Type/Page>> endobj 35 0 obj <>/Resources<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 512.0 160.0]/Type/Page>> endobj 44 0 obj <>stream +H‰ŒWM\·¼Ï¯xÇä0oÙüè&¯V ŸŒÀð>ˆ"ËV$òïSUÍÙi$0Ëê÷øHvWW7Ÿþúîxúñ]9¾ûË»ãòýøyJ“½5Õ·¦öÖÔßšÆ[“¿5Å[ÓLÓçK9ÌË1¬W¾|¸ürü~)§Y?ðÛ ¿õøòñòôÃÏåøøÇåóþÙaã\kMŒÞºÐôérg >¿Ú8üŒº4Âÿ÷ z;^r4L¯î6&¿‰ß÷—>sô‚Ñýi_÷IãSxWV¾ºn Þ&•ƒ*xé·Ë¯—Ÿp¦²x$žÈFðL÷³ôåg)Åäûqò /Ì“;¼âÅãpIŽÌy²ö®75¯ïYr¬>¥Ñû˼\^ŸÚëÛ_z±üü‹\1wGÂ'*6gØâÑ¢'§Ú”Ú’Fð\Ôc¿ŸÞ¾¦»÷ÎäpŒ^ÁYîS7ÐÖöØó¼·¥ï“ë>n}u>î³â·R_¹~´sY뇵8ñwÝÝ_Û9Zà[vΓÀàô  ®N¸W Å8÷sr¾Å9ƒÄs®à2D_≮6O+•Èfl »¸40Ë^±Ár †!ÃD” 'Öó°V¬Æ“˘~.º +Øù½É…ÆÁÇ<  [#,ûiµk=WsÃ4·¡s ÃæXZ>'°±¸WœlÇÞÌ0i-Ìf²&ž N?“§€ßsÔýv›dÏ‚Çá /çBª¼kéÛ±Ë)ä=€Ï-ddɵÇĹiàE LÜÚîc3÷ˆÛäÙ ßb :"7¹¾qáHÃÝ "0}%äéGãükÁ†¢P¼»eöOZ̓ºd:Ý(:ÁL-õŠ‚!æë° +/rðJQ’Á»6«*YaÀ¡ip,  u¡1<ß^L$¤Ö¢ Œ +ž`ôŒ%监Áý,ð?ŸºéjPžñ"åc'H+33)@ÈÝ)_„ô^áíàêéŠÇ`þÈÕ;Üm2¨ÅçHÂÅÍtð.á i4¶ÎtR”ÀÝÒ2,) |Ü„úŽ)÷Ž#Vä{«LÎ~º/az²Ã3³Á…f¦Jd7÷—_¶©Ô‚Bå§ËìP9ï|Š¼Ãyñ=-K$nÔ…´§N ÐXš ‹÷maʳ6·paîB¸ñä3ÏIÅré¸ü [ÐéáU¨ f2±¹$KÔ”*€„u%5[…"[$Eøß0ó¿ˆ'µE≣×Vã¡v p_¨ŠM9“†LFP*Ÿ/±âœt¿ ¨ÉLÃ(//1 º¥!–rb5MhHA¼¾,aK*pN¾(ÙMµòõ;Àãµ) g,dY$¦LWæ9£.Ä ƒê}%y;Ò’­TܸKYmÎß‚¹PUÔ¶ÿKU' +¥#NŒWÇ.²ÉE׆åWäpÈÐœ8É, õ­ ó„…›ìÔ÷¬*“³‡4þ&Œ|¿q€µíoÏŒTÖƾT—(¸o¤b’)q@MFèʜ߸<ÚâÊR…ÞoM†Î0L.èHUdØÎÌEe«‚¤£„¡ˆ£8¸KŸ`‘ŽËËAÀ=«üIyâ„š¹·PW¸¤‰blÓà6Ó’èÍHît-p§¸[†ÅjnµL¹Û-W9Ð -q¨™`½OÝ̓ÀC’2yè ƒôX²t†ˆNc@‹¥‹ƒÁf£Æ]°×ž¼;´S9Àp… +å`Ò+šYI‡e8­ÏÝ +ˆ²,ý¢,õ©èÔX½™dõ‘²$,ߘzoÎohë,p·•NhØÝp c7-À£ +³(b—dFËmEcß Çé‚D¬ÔGY‹£î*Ÿñ«@“ç#[¨“®užÐ¶¾Ò€ûQjt©pz6$+{Ln!Û—…Ùzží 6Ê8RîˆFË2ȯ5¸±ê¼êæˆ!‚3u]OM(¢B)7µ"½p*zÙ•s(fD5Ñj‹{¦2Ã7¨¡Ö”x%ÆΨhDpÐØ ÙDÉqYغ¿¤e­mÑGª ܲÕÒ5•X¹<’ì<Û='†Ã€æFHT>ËûÇRœA¾ÂšJ©´$c¡dƒcÀ2úÉ_0Ðb.xÑ +Úvä×]7‘Û"é3 # ì.LN!¤²yNHÏbòrgÐ;F‰Û©Zé\– ø€¯¯¬5k¥)“®µ«MÒú„¡¬‚Ö0ê„òþäëݲ«óB)bÊ«©ó–=2Û8Ò€}Â$b”ø,³;6ˆo + ),»zFÈ„ú~¸æ®Œ¾e°ÌصÑUŠš:â ïøF¤O‚vbSc·´3q|èôHóe;x³L¦- +ëR½L¹¤äÞzêÆF[aFº‘ªÀ+œÛö[O<é?h‚g°¥"€T>EWW”츌ºañ$§Ùûæ&ê)‘%‰ÔüéòÝóÛÞô釟ËññËÓ³ýl}þõ‚¾—³ð­*œÃ;#ª +ÓúùÓåO|øò¯ÿ8þþï??ÿóòýóå3èl^Ž,u|ùpùåøýé²± {‘B:vÏ ,¼êÑUlæ ‡Jafz ÑL¯”‘õ.!¾Z³[ÊÛ了t°ì.xD`)S½A‰l\)ÿR-™–Ïò&‹’·è*Oˆ‹SX9¦ÜQãöŒEn”TÏ`aXºM¢/Ÿh3P¿ã6fJñä·G¦ªËkÝPã1@›ãΞ}ËÄixålžm 1ªy×qñ~‡4ñd±ë ²Ï9 ;Á8$¯ÈkÞàè&аÞÆ<›ï† °ç" 6¶"‹òR±[0¦A<7b>Sª‡úÕ½“òÀÍ;-*žNfr öjïrÉŽáËmHuÍw°Û¾òMÏvYØì+ kÁ|œµ-ú$ÚÍjk!&`d:æŽYÃýáÝ©+ÛË¥¼Ž¨˜ýõ½D·¯üöíI+ÒÅ \)î‚ }Éක7=ô¶WlEXÍ:}RUÆ6–†xÖí&_“¨3W§˜Š²©#>½ãÌQ^ê˜v¼Ì©ËÀ±C­ê‚zHÈjYY¥–jþmO¨¾uØîßxj:û°AN„×ÇŠM®šAË¡:‚q»…P¸_ (§æ¯9I?À£†ãmº©1ó!„Ñ4¿³›í%IäÆ(K}7ÞX%³ûšy¦Â¶{šîía›o øàì)\è-sÖ”¶`·ü`A‰/ë«Yÿ!¾Z–†Aà¯øÎ$¡mš³ãÑÿÿ–$h{pôà©]†¼aYhAú¿Œ©Ö:òIù¯Ñ•‹øhiR•W:ÐB³š¼pl©µjÖŠ‹ÑŒ\XØ$µ=ó^Tdªî«K9yD(d̳›H]­Îþ1™gêA?æ˜zÄ ¹çtgð`ãA6‚ Ù:¶9Ä ¿¥«Tt&õ„˜’ F2ø8R‡ãAîÛw€­•&bϹ o‡}2wÖu}vºf‘¸â—ØWçêÐ6 ÷Q(P‡?¡Ó¾OïpKxuHȃA´Wcæ˜Öš8)Éc[bý!TP«2½qÓ›•«>ÝÁðÍeÞ· >OÁ9®× endstream endobj 25 0 obj <> endobj 26 0 obj <> endobj 27 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 32 0 obj <> endobj 33 0 obj <> endobj 62 0 obj [/View/Design] endobj 63 0 obj <>>> endobj 60 0 obj [/View/Design] endobj 61 0 obj <>>> endobj 58 0 obj [/View/Design] endobj 59 0 obj <>>> endobj 56 0 obj [/View/Design] endobj 57 0 obj <>>> endobj 54 0 obj [/View/Design] endobj 55 0 obj <>>> endobj 52 0 obj [/View/Design] endobj 53 0 obj <>>> endobj 50 0 obj [/View/Design] endobj 51 0 obj <>>> endobj 48 0 obj [/View/Design] endobj 49 0 obj <>>> endobj 46 0 obj [/View/Design] endobj 47 0 obj <>>> endobj 45 0 obj <> endobj 64 0 obj <> endobj 65 0 obj <>stream +H‰<‘LwÆï +×Cé*RoŽžÞÝüÍ–9!,K\â´GYâ(¶ÈØHåÔèUƯ´bétY:CE[¨¦hFŒn¨)…d3lÓe¤eË’í“eìý²oÝvÍ6ß?Ÿ|ò>Ÿä!‰l A’¤A¬¬ª¬2¿øvk›¼GvÉ–f9oA,‰žËFëtL>¹.{úÏJj=1uúì3P´ +våiõôò/ù„†$wWm/,¬Néð¡f§T/ìm•6H‚»ÕÑè|8A´– ¢ìj±‘ÝB™«EjvÕµ8eW]£PÚä0¿,ZmŠ[Š…zé¡Iì"L„HX QET«É +Õ—Ø@l$Äy€ŒkŒQóQ0‰&’ä\âɬ¹gQŲ%]¡M>¡4ñô­×ûèù4µ“¤ <Ÿ…†ákM@½`2Ûßqpg®R0Lû¢T•Ö磞ÔÐ?ubúó“wY°Ì@˜ù’ƒ ¿Žõš‚gŽrp‡MÅcì·7ìàÕÿ¶6Ô”iÈŸ‡pÊ0‰ +á%fCaÝû.ÐsPpû!èo\>Õu•Ῐ³uáÖˆœcðöŸšì ÷.u~â¿S€–žJ`'’=!‰Ååâf\Ê&ñÚ¼jqG.qj#8@~‚üi>þ> vÂósôËØ…˜ÝÌûè`0ˆ9X¼ÀüVò^‰·ïÄZü&‹°&\˜âÂç©ÝÙC)6‹ßÂóœîîàËîAž~Ô†ÃT÷ppøŠQ?؆j=íù KÁÅ”áÚŒj™Ñk]&>꣦´Ñ(µd¿U²ë^s7sï_÷NväbžPõq¿‡ê«ïw–ñcúR´áÑø(ä%bì¿»@̃¢®ò!¬g ß·mŒ %§âþãc\_¯ªéPçëíçö±8÷UÇ&ïûã˜4Ú,ÇÞ*ßÔrÞNÊN÷ž |7¿í|È‚ö×[¿óó¡v}Š:˜À@õE%€ßH¿‚‹P±rnŸP <-«Zßd´ôXš]ÞªÂÈ“•.Þ¦ÂÛþƒmiUãudåº7ïù £¦ÇKuŒÜs_gg¯Ì@î]^ô2ê튀!òYH‹¥núi åpƒ›JòoÝŠ .7±2•ûUN‡×ü#À®yš endstream endobj 37 0 obj <> endobj 7 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 26.0.2 %%For: (Damian Kress) () %%Title: (Stalite Logo.ai) %%CreationDate: 30.01.22 22:05 %%Canvassize: 16383 %%BoundingBox: 0 -1645 2832 13 %%HiResBoundingBox: 0 -1644.52434696127 2831.24145507813 12.0000000336731 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 754 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0.113725490868092 0.141176477074623 0.200000002980232 (Neues Farbfeld) %%+ 1 0.682352960109711 0.341176480054855 (Neues Farbfeld 1) %%+ 1 0.835294127464294 0.501960813999176 (Neues Farbfeld 2) %%+ 0.090196080505848 0.109803922474384 0.156862750649452 (Neues Farbfeld 3) %%+ 0.839215695858002 0.858823537826538 0.882352948188782 (Neues Farbfeld 4) %%+ 0 0.443137258291245 0.737254917621613 (R=0 G=113 B=188) %%+ 0 0.662745118141174 0.615686297416687 (R=0 G=169 B=157) %%+ 0.400000005960465 0.176470592617989 0.5686274766922 (R=102 G=45 B=145) %%+ 0.549019634723663 0.776470601558685 0.24705882370472 (R=140 G=198 B=63) %%+ 0.619607865810394 0 0.364705890417099 (R=158 G=0 B=93) %%+ 0.756862759590149 0.152941182255745 0.176470592617989 (R=193 G=39 B=45) %%+ 0.850980401039124 0.878431379795075 0.129411771893501 (R=217 G=224 B=33) %%+ 0.945098042488098 0.352941185235977 0.141176477074623 (R=241 G=90 B=36) %%+ 0.16078431904316 0.670588254928589 0.886274516582489 (R=41 G=171 B=226) %%+ 0 0 0 ([Passermarken]) %AI3_Cropmarks: 2319.24138117469 -240 2831.24138116282 -80 %AI3_TemplateBox: 640.5 -320.5 640.5 -320.5 %AI3_TileBox: 2269.24138116876 -556 2881.24138116876 236 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 9 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: 1433.16539050358 170.603861371003 0.676262637277305 0 10129.4304950763 8391.69560459121 1668 1024 18 0 0 6 20 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: 1433.16539050358 170.603861371003 0.676262637277305 1668 1024 18 0 0 6 20 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 777777777 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:240 -620 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899992346763611 0.899992346763611 0.899992346763611 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 16 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX\Gþ;Æ 50O¢åÀÀÀƒAØÇçaU2>Ú)ì°cÓ]<Ã7A ¤L2%)E}"·ÓkaÃ(0Ü­ ¸ sYÂqbJ"Ù½m™œ3‹,ín“ûÛë\©¨:e?JZ}Œ%óWá`‘ ùŒ&“y­xxrsYŽÍåæÄ’¹Õe5wcG¿6-7[ŽâØeU ë¬U™ä]VºMòŽÉC³â•y*ùM?f²«J"bVµ’e³¹gÑYYÎî²lžÊ×-wG/ç”&DªBÓM°8-²“»ã™Wzä̤C³ÜëÚ2²Üm*ZÑ*÷9ËFð†nY»èhµÂÉÁ;2<¡ Ö…¥fÊϧêœgê²ÿÞë2ñDS73XÖ{Å^ó| Y?;Žý•3u³Ø+~8å–-v¿ìon2=EqÚô°¦Ò°"ÐU¢ß ^ ö¯Z•³Ñæí˜åm–³v®écå {¥™?­rÖÄg§ÒäÌjê +ÓÄys«ÖMŠÓa̪{§5içµ~*]msgrÙ;˜× ‘,­+ÎÛžÕ ¡8›6BÏôxy)S|ƒNB›?ñìD,”WááGîJ(Ï‘»ˆªl¾”V¢LÁ3"ÙÜù²¹l}nȈ3«ìx»žTãÌ£L¬q¡YoZªÞh6’϶R½„cæ¢ae>÷ŽGæù[‘Y]®6ÁOv’O°ve‰®s²¨2}K£*¬4ªA»ß Ržî‹„v­ì¹-ièÎ3¥‘ÎÙTÖACÌ¢K|ŽŸ‡#·6KøôË,§9'Õë‡NªUuC5¤Á“jÿ¬ÚÑ.õÚH&ËcÚç¾em~‚Cc/ó¥Ú;h¢Õí|y®K=+klš +âЮ'Õ2<,fŠ‹gd'žjjä:½+5ë:›ZG®“äÞÈÕ•V.–;·2ÉuîÌHt¼»4Ñà%¥ýš%×±QeÉ™Ïú´7§Êmɵ.Ç|$c’œ•‰$ï:Ë1ɦd^ 9I.m–„‰42O£1kÉ™]јœõ0Ppœ vúÿ6ÊÓ ëV Ñô<¡;ºâmæ~¦Ù²ä§úX(uO×]笵ã/)ë¯{©̪š^êòTó‹3e5»êIÍ(5TÍÉ1 Õd&Vð ÉÈF¡ó ¯‚-öÒ/en( ³‚Õ©§ÌÍYКGDž:;L£¥á]Ë.h2{™åOƼ:ÞœUOÆïر™¾ ZúŒ]uÁºA£Â©Ë¸0Pp”ó&+gªhxW¿›K5Ïs“æ¾Ùg®žs+³ÆWôãÿât¬X—D>BLÓ?%fdóy&ý­a3 -vÕ¹(/qÊãÖÕxÒ\ƺA[žY¬*“jÚOyÙöNÌÈÜDJêoÎôÛP¬Îd|¾7œGZ{ >{g£{b1GŠ—U“ažªìž%õ‘*“òG¼?X•ÖénÓÓ¦yc:IšC7ûgåÏüÍ“ÀÐ8 "ê‡F'´¤´mg9$æh ÕþÓçn8•…Çœ¬ŽmÇk¼ƒY£ÝOU/#áíL6c%ßHs/ ­p€)X(DØMÚøî,¿ˆ©™f™PÊz +Ã'߸ZÕý6(cß,ÐÙ@ h 5DР†ÓP@cH`Æ4FAC£ + Q£ÀÐ…52$áQ!aa1 + X<84(Hh  4Pˆ@à 3Ô7®AjÌ1ë¾ÏÎU‘Éœ7'Ñ9éððþíщRF! + 4hTa†¦Æ¦ã¹ùàä0LÃ8Æab†ˆŠŒJ¦£R5ƒè hŠªÊªåºzae1TC9Ê¡ +¢ÆÈÊÌj¶³›Zƒ5˜ÃìÁ lJ­Z[÷úb³ m¨£}(DÇä²¹¶Ï7:Íà;ìàCXaŽ®Î®ç»ûáå1\Ã9Îáâæôº½÷ï?>Ïð†;îð‡C|°Ð°h<<* &2`:Ð')+-›ÎË'f&C6¤#ò!!rˆ¡Œ¡ f8†3 C200408 ¦ªÁÚà†kx6dCCCƒ£Á¡á¡¢aä(‡9ê°ãw # Ž‡Ãáàxp@8ÆÊÁê`‡s¸ƒ:¤ƒCƒƒÃÁÁáÁÂaè¡ì¡~¸‡?àC>0<4<8 ‚ + +aˆƒ8B$D„Âââ†(„AÄ@<<8<4<0<ä>àÃü Ð‡z ‡t¸ƒÌáh¸ÃÙðOÃÁˆA"Ò‘ ‰y”è€ ‡ÅrxÃ|{9\Ã1øêpƒÓh®‡:Ú@ +W2‡q40$ÎœkE£@ +ŽLËJR(¤ÿ¿Âݦk¬Õê¡ÁÐ ê¡NžuØCƒCCC*´¡èlx,ˆ{¸‡s8Ç5„¬àpC:ïsꀽ‚=Ö)LMAÐÃ80 ÃÇe|øCêa èpv0‡r ‡qxp(8 Žt wœÃŽ:ÌQŽrc  Ž††††lÈlxÃ5\ƒÚÐk¨š†CCC2 2œáÌP†2C11 DBäC>¤C:¤#’!2Ÿ——Ng³i©PYI99 ø€è€lÀd@LD<Æ¢¡a!!á Äîp‡;Þp†çóxü÷ûÞ^§Ïç÷pŽk8†c¸<¼ßݯG77á;ØÁ7˜Áhô­p¶ks™<†(DêPGÊP†fß«ÛZ«Ô)„=˜ƒ9¬Á, ívf«•‘A”ÂC9”£Š¡²°^®–UÕ”9¨( éd* AÌÃ8¦arpn<R(€B 44ª1 …”CBxLp‚‰G(hTañ˜€ q‹†9pà4PqÑxd” ã!áÁâQQ!!a"ÐÀx@°˜À °@ÆÃB‚â4`ñ ¨h„`"ã ‹40$,$(!˜ˆˆ`1¡&,$@°xP44: x!!‚`\dL@xh4B0‘ñà‘ŒÇcƒ<˜˜  p@ ˜hÈÀ`ÀxdH˜À€dH<À ¸¸ÅC‚ÅD%xd@qq!F$LÀhh`<22$<2$ Š¨0AA# \T” CB 8°xPPÜJ¨À¸Ààá@A#†D2˜ +€@1ÑÐðÈxXtàÁÄ£x Ñ +ÈxððЀð(ÁÆEƃ(P¸ÀÀ"L¸À8€ÅD„ PÈ  +,&2,&0`qÑ€ ¼pÅ*H d ±0­Æ#‚Å£ ¥jHdP<0©1‚ Œ 2XxRƒBâÁ Œ')4$"<*°H + Œ ‹‰…‰ 2L€p‘DEÅ `0Bb"C"ƒ…  „¤€ñÈx`DX áAA‚Œ ‹ ,&îÔ ˜‚GÆ…Å‚t” ˜…… <2  X<`@ ZXÈ€Bã‚F,& \<°x°GÅ ¸@~€‚ņă…<,."\,dL ¨˜€!ÁbBHd\@Xx„àÁ‹ Œ $<(2. L`p€€,($   +,$$L¸è@Æ#ƒ‡ X<@¸˜Àxd°@Á,L`° p1áAƒ àa"(8¡â±Ð , +‹…00,<Hd aA„„ &((<(2.*"XL`\P`qaA!ñ`"ÂE…Ń<,DpÁâb"CÂc.‹ Š $HT@À¸XxXLXLT<0€€q1¡bÁâA‚ &Pd Ð °ðÀ°€ÁBÆ……,|C¢âA#c!£&0HÁŃŒG†„‰Œ €`!Qñˆ°Ð $0"H`Hd°ñ  ˜À‹‹‰Œ ,&(02,Œ $ LXP˜0aÂÂÅÅÅÅÅ‚‚ÅÄÄÄÄãñXPx2+ë“iY'çèÌ‚†Æ¤hPËP𧭌$ÓÀÄVÓ,hh´Ê‚4Ne(hÐØéÿ8Ÿx”i´(mh:˜c´ ¡‘fÁ–d(èí*$jV–&~ZÐÐ Ð@gΩ“h2i4m}ø¹¤; ˜}çó–LÃxhÓܼ÷Ë4ìÎêµÚ% ®hÔ  Q•w¯L#1OWé‘iø:—ž©ÜyÇ;êódE"÷u‡H44ŒÈ‚4ÆPÐ0:ª;]¦áe¡µ2â ›%Ó@óÞl…h”iÔ gª4”±†›½ñëðL2¢õ­JÌ!™=ž™ºSfá\ÒX¦Ñ¬^_Ô,RÃÆzM¦AôšË²žLƒâ0$    QVƒYS2 «ëçï¨$Ó¨<œ¬ëF$Ó¨ áhÐ@aHˆ`1‘‘ñˆÀ#‚DE.x(4*xD0 , ê7*Àxp bB PLLh¸ ( ÔȨÀ¸€xPL@\à0@x@x< a!ãA РÂÆ.,.p‚ hT !Ãââ$("¸  x\ !‘añˆ Á€†…  +$`\P\8$Hx<¸Àx@†Å£bƒ ‡ È~f#E #üØ¥–a5^tyµ–¥˜@@ƒ +F2¬†{ä 1 +FpÑÁb‚Å„‹†  í¨QÁ£$H„ÀBÂÑ ‚§‚ªF•ÐÈX£‚G†„ƒÅÅD&$ä"ÂEDã‘1A!‘ +<(2&$РB(h@‚„Æ4*À¸€hÐ@¡däªQÅÅ„Œ.À04h 0Òj`\dH`dH˜@A‘€F£Œ‹ ‰†£A…ƈ9xpàƒƒ< ¿;¹•)wx&w?ÊËP^·ÝéöÜx3ÉÍäŽÍÈ]‰/å5þS>f…8÷Êœ«¡•ÜÙ}fMñQu|i‹ËU&º‰/¯)¿‰¦¼Ë¡–ø®|9‘‰|ybJßšb刯?ºjBéÕXÙ}qRìd‰eIW–u…xÙ¼9«ØUVì­»+bº4bxEH®ØÍp.ëïªwd8TíQI•’pê4¼AÂÛ/ÍNèJV–ø1¼)›$ߤîÌѦ¤ÔÔweÝ]Ì¿`å­Ä0ïë‰Æü ”©lÿ†JcB‡sºeŒ™i›s«zº½NhjúhRƶ›‘1!Í }P²?Ùú’½Ùf£k>ç$+]s&Y¼ÌÊVI¶—)X;~&Ï…/Ä!½E·`¦!=K°ö¢k±Æ³éu‚÷Á*,™¯N6Á’“o¬©‘¼Á R‘`#êªÚ|_3‚sëQ^ë™èÏ"á‘í”73Oi–òÖ`ÙŒMÞbÉ4—”xyí%y bÑ?,J4W®>l‹ZjúÅ»7ÑÇd)î ’Ë2žœ_¯î¿’ÄÅ_y¬Cw‘ñDb+º“Ö÷ÍÅúÛÅ*ˆfEûµÄJ¶£¶*i®JEŸ±zB­à¥³„ÚY[w¡£¢ uNðêE6F3—6%Y¦>ýåŒÐÏú9Ããej6²O‘L;·‰¨¯nÉ9¢•Òf§òÙ³Ž¤=Ël’‘…çK3Ég9Ïœ‚6­4´4ßokÎn.ضl‚VÖŽK‚uí\þ ¥¯ç’¹ÍcšYÒØwLK“;ðW"¹¥à-kªÐÊ0iŠ…¯iÇÈƾ»ËYÏó»h.G÷œ\Î7uE4CÁâ³%î±·ºš2ͼÒZb;Ê)1úræ9b£ûÎ5X;i(_ÍžÔ"æx©ÙR{eÖ°cvÍî±]X­Ø:†þ™åé'±u|» ]b»Å„/;Åt_ÑØȥئsŠ g†ÈªKôß};BËC¿èO´=ã¼;O(géçévY‡VDe¼NUžäe›5N¹!å Z _†­»3IëÔÏ×èÁ‘9J’åœLϨœRÉ´dDœÛ2÷*ÕÏÊÍ|cGØ2|þ2í|Ê$dDz›k¥3iÐpÌB/ë{¡éÌ™x¼bQ¨U½²’PROydRDv˜£JÏñX§2ÞbÛ\íûæy±¶’U‰5Ã1:’Ö*yö©‘v¨SEB±*þ'Öfÿk]R›³cçêo-Z"ݽÐ6…ÒF´°jmÄmÙ-³gĦWš*mu^Ú*ïx»«J;÷$²s1þÄíÙ­=æ½mfQÚõU»ÉUò¤›’ËzÚŽšOß bNá)©j9#oij«£áäËv¹æYž¼uøÐpÒî¿üéN={%[¿yS²½²ÙŒá1µIˆ i|òÔQÈßØø*Eäñ˜M;b¶•n;´1«2J)7ñ·1“‹s9(f3œ+ª3ýb&<ÖÕo©[Û]yÍ!«19·ÙWŸ5ªBqŸ)F«™Î-çfš,ëŽwe|b!õærç¼W÷Ñsn†UTÓe¢åw8‚nÓ6YD‚¶©b ÚYÅCº«Õlj“'JË^Íó;4JÞ Õ ºwp7ùcIé(µï#óª¤í"Ù¾éeÏìþIS dwŸzÖ„fX×;À¤JÞYÕ e./ïí¡«±‡Pò0 Ñ’„~¢±ÊËÜŒÞÓ%¯Ž„*¡kåëð\F•®…Î…NÉ+¢eMº¤"ÌÎ8¥4£âÉRפÃꜥjœX]ò>–¾J‹Ì·»ÞÁ¯ðl¦{Qz÷*OúÒËJm—Þ sJ|½œ±»–áŇ·tÞ‰¯3ÿ9“ê>›ÚáÍÝ{‹hZ™U¹³ôKnˆ†ŒZ6fä¹·\¹«™ë†‰9h9,<<3<¹³=íJîÊëYKŸ[ʯ¥›1Éòk«Ý\z„øWÑ ü¬ðqðŽÈLòzµÉšêêž4QéW‡½á%k§w*Ú;ÖMU‰2G²ÝõjÞY³^+3šwhLfBíP᳄nH.:³’zK6äK3âY™fNúâ\‹H.ñõUzZaÑŠ8ä¹é꓇v>[ÕšoÒc…sù^QŽò§ñåï\•ÕYòY4ËZÃ9wYGÎLûæ,{®ôk™ö¬nì«XÔ<]«~Yª“‘–œý ïÌuç©‹Wuϲ^ m|JCËÌÞ-„S ¡…°^2)t´(-…MBg+ç^W)t˜o¶3šöÎlžøÃÞ´ŒŠÒ#ÆûÎlÐä0³Ù¹’öT˜EÏ)Ä“ÃÞƒVMŽ½ƒây^F’ø#×k2eL†ÎŽÔC©”ù‰êÐߛީ¬ÚÊKe«ˆ/;uÄ~G¶;S*KM£üäa–]9±H½+Ÿ\ö”?M’<ŸwEÌqMñ°Dÿ僵: fM6’‰ÆŸ½ˆlŒ)˜5BÉì„&¢¦+L¿TRu¶ëœFCFìÈÇiO™Ñ.Ÿ^QµŠO“—‚cÊÛ'Sp|V¤’œcµÞG+ß*DÉñ !%‡íð̨(/9†7γÚWCŸdÈ,ïCõ$JŽãæÒˆexS3ËY]&¢æêîeéÏœ¾Éгüjå§7Í“¡Ú˜|®k&Ù­„èªö‘"ÏÐ5E÷¢)ñ½ýzG-l^ç5v1ÃJ,M Ÿbt•—˜bäþ(]™÷·V–' Ïuš1+KÉxšüHéAeoòhªNJ–’G&¥ˆ# Z³¤M‰LÆNS\£ßѪæ®TG+ÚUfÝÖ¬º>2Ï™!SOŽFN#'£çS“S]tWNä6ON9ei†¤ôMeÖ毦‚”’ž¼ÙH’ëæ•’$›ÑFæ­zÕGL’)ßVf‡ÊwP»’*“Qž‰Ý‰Ì_—TÌñÅÊw€”“v„b%ó_¦]&­y&I+Qò>/*£´ŒTª­V÷avê(mY¹ò›‰·ëdY¤Aßï±li¹záËÜ”«B£j‹F¹r[óJ¹ª¤ÏÈ˦lò2Þë¬#;Mf™Ì³ÊU•9,Â×Üa–LÌëßÝ%ÓÌ”1ÛÑI¨\fø~*eÆ9lýJud>ˆgƒRæ;þ¤ÌîJæy*™#Ž‹R¶™OÉn.eÆ™jùLÌl¥ú”sÄüË·u±Ì´ñèWGê2‘µC$E²Ê›xcIÍ(ó—]J©Ž(ïòÈó»ÔÚûF<±©d^V$×Pl;¼Ø\«œùæWGd¹:Ët$ǙΑá\Õíö†Šc(ç#ª_áTååXkJ9—éÄKº·^&÷*òÑÒòqŒ.g¾ƒCÓ“ÒT™;/éÎsLU%2’Û=™ÿÍ®E·¹$þŽæ„ד¼jšÊjòº‘ï—IMKÞI¦¡Üœ’3fˆ§A&&õr³QéîËÍÎÞ9Ä´)AñJ”‚Uº¬g³JEvcTSet5·‡‹¬ì#I³U^Ò25Í‘ò•ùÕ”{dÙ¬’ù‡°52õÔïDèŸeêÓXNïdê9ÞaUeŽŸ?í~”©±ª0A(Pà%Ì›Úß¹ðü¼E“ä»àÙêKW½àçXÌ+V]ð7-Õê²Nðî§Ò,ø'–M]Á{ê~ž±Ó‹cI4Vg2'SMrä²±ÌX•s·#G¶»Ü.ë¤ÜéEûp o#?d{=g¹O¾)E¤V"Éeëç”áUU¾Òj‰h¤K¹´D£Éê.ó)ó2Dìå‰%Lì|ìåÌù=Í–V™ÌÌ$¬täŸU?SJ&Î-ÛqÚÑIUÈaC¡qæ”/;uýhdù§Ô¸sFÉ9š^FLÅrnX2Oc/™—Gg’SR"‰'ï&_'+‹ÿ7Á¿>ÁKùRþó™$ß³”¿ø·™òò×9]TÒºf¤×þ?¦Xa_RWjÌ’ÙØ ýæ"']Ìi•bÞQÌ9sݓϩ餕שdWV"»¥½¶;ÙLÙÕIÎèJÌ&g÷*1ßµÄ,g®crˆÌudë¬=‚-l¶ +k’N²¤—ãy™ù[-•:§xº©tI,41ž´h¡qÏ»3i8)é’K†s$sŽ±Ô^—¥JK§dãHºóT1JÚ–«ëäiêÍ*I9Âi¡¤É-meF9–OZï0Ppt.}yâšìS½Øκ4§‡(ÂË^V ñzq}+ã‰×+¥]ÑY.6º*)Y:Qnm³î\IoT—»Âéû&ëõ°*½–KÚ«bÔŠÑØJ©ºð¤Nz„9® Éõú´RÝUiÞçiί–Òù”Ú Ýò*¥Å“Ò!bv°ó²ºÉÉZÔyO:±NZG)/m Ó–³Ï“ÞÜ]¥b†w‡bo펼šbcyQYþÊŒcc'ùØ~19²+NŠÕU™5íÜLÌTum¡ÑÙÙj§ØT‹äFz•†ãº[¬zbS$–ß² åmo¥ø:sHsB8”Xf}Íïö^A?×–L†T½,¥ï#½ª2™Ô3hb3ÒÊ´cY¬¥»V=+]Nvlr¯´?-‡¦ÛŽhrø·È(hÆZSZœ¿Ì‘M[ ;ä©’i¥ÿd.š¹ÌÝn¨Pj=ÒI©¥§A¬WzHeIöx^êÜ©&T1(uý¢©Ê4¡šóï]ÕÌ©ÄŒ3¾C”éUm¤W•w”)–”„ê{Ÿý¤+ÊW$E¢«³$KI#)–Ó^”,;’ÖwÑÒ+u¥G¦Òûü—dŠâ1]‹æ¾7åJâ3!Ýë¹"³Ø5;íòËÂ{º‚dtAkÄ 9Å9«kš*•’®V5i'kLzw»õÒK3—ü”ú—fvU&1+‹‡ (` QWx'%[9åe/ßÜlùj½)G<œã•¯z>ïÉ3ÙŒ ©+òUr>:UZÊêIQSû¶R»ìs+KªMgŽTËDG(T«mY-=‹Š'i“–—S–¹¤}0í2Ç)iVT¬QÒæf<òT¦‰¶Q–,·åUäÚÈéãìÌÝÉ3gZÓýV7#Ï*£Á²´j®›Ïöù»ìÌOjˆ¿So²™0¢Œðî$µÞ\}ÚÉcTS¢šº§Õçnsd§Ä¡_É šÌMQþnõàNø›ë”«¨7g–(TD'ZÑPº•T)Ô¦ÇEWÑðYcuõª=qNLGsvFˆÇ»ˆ& ÉéÐ2ó¸—®$¬•ÙMs¶%ÿ>fF6ÿŽ^™ÌªêÊ€ +ŽBÁãhljcYœº""–ìYyra àèŒíò²Ÿö’å*|–?'Y¯dÝ®ü;Ëz IiiøV¼e§àР LN£N[…ê14¼&z^è…0oÍ]Wµî;™Û%QmèúíHªÎ2KÕ…—ªïà°ÄêbÅjþùˆ~(Ö²gýè.F¾ƒ¬^ñì²óD[=ÇÊe?ru™=K®æ÷&¯ª~9,OêÉkÁëˆlì«SÉK[ +ÖSf»^°Æ*ó aÑ/“Ìš²’-¤wÌÍ«+êÇÒî$kf•8…’u™ŒMVh®»2>?­®r\w‹hjhãI²vÑ0ÿ9ÙdË®2Ö>&H÷ïsy_‡ÉòÎÉu¦WÜãSZ#o.­ýÐ'­JZßAú·+Ú¥LOðò¦OsµˆgE³dºçžÙ¶|mʆä,‘ÆÛïeM"›m¦XùIlõV)5¥V(5Ó‹lV™S[§å›ù¤æ7HØÛ}~œ• +yXÏ×%d6z>«&KÈü´V¯5KªÉTg¦ÖÍóÞp°d˜Bæ©“'Ž'd&{_!»œÑa&eÌýeÌEƒe3¦³ŒyίŒ æïUvŸ–1c.§d¹R~øÃ,2C×H–Ç/aÏ1/¬<++Ùe„·Kû%¯G³üÙM°\úªX¾ƒßˉd‡òr¹LN$/×(ñ2«<6ó:³²"Ÿ¬%Ë™bm´1säR\&»bªbÅU3J,^Zò3¢i©2ÅjjEy845v=Ñ0‹hÔºàa¥ÊsEXHdY*Á’)§kµydÊ)™ÏJ’üò|’d¤)4”ŸÎ‚y$XM9Íæt9¹gÊ×:%'ßäs’òäÈ6žC*)¥ä²1+Ì‹‘obtG9„×–ëb}î¤È‡6IeR$ï]o<* ‘̓8Õsqjˆ¥²à8kPþçáß:ëâñ¦tI$6þó~OJÑ4©¢QÎY‹?¼ÿÜÄâë¥ÛR2цdÆw€c•Ù¹oÁ”×LºŽSŽi‚iy-ël¾<Ï0/·J+õÊðFò4^n…è5ÍéªÎÉ9”h…v§‘ˈÂDËû±Í{j.k\#ιDivJ~'½Jš½ƒÌ“mŒùLºÒs¤’,³òòdÒx™Ä$¬_öQÑW¶Þ›?žÌ.QKß»$bõÊÌY’XÁä_2™ì-‰½ƒ¬Ÿ¥ [ÂÄ;³Ï¦ºÌÉj ¾ìæFù•‹6c)Ç’ën•cYÏ»m=ôœÉá´\#‡="áU­äÐN’¢9ëPŒdºÓ3Ö›³k«KÛ˜®{Í+)RÀˆdè¢$J1¬;RšRJ¡Õ­×÷<º›×mîÈÜW=…°>ãKÂ_k…çËׇ¶Ù NóßD› f‹½¢¾.¿Ueǵ‡lì·àYöóãêSîwûUGaóžV•û S|››yŧ¼›"þ÷bͨçs–xñ«H$xæq]¥¯`ôͯÏx&öÊÕ˜ñÌj%–å9)šÛŒ¥>äS¶4zþihä±Ð#ˆj„ï^1Ræs"³cŸ¿2”´tæó6¥›; ïʶMƒEtì?—yMŽYÓôùÊ¿êÕó”å"ŽàùìE&y®ekfY’w833hx<ìéFÐh&(x6‚s†ò¶2Ž;¹eÏk59¾GÊö˜r7i%¿£IXo]2#0›(™X{a +V5³SvÝ’JY8ž¡ÌPÖ­&‹tV„g“!ùUR\qð0ÑÄæñ#V‚µë)fÞYšôA<‘x(ûϤÙ͉çЯۑ+ˆM+ûÄc9t“•ôäQ<-¢aæÔvfñ8RpêAûe]fŽI¶)$y¤¹Æž¶—£v›fšôGîä®N,GS“#"’—plRrtN'F®³Ó•*fr.¬eÊxl¡’;ütìçʈkl‡’ã¹ßáYJÎÕ$–ê·ú;¹¢^Ž>tN2YS/ ój'ç’"÷Îsæ¡ïHì³Ü½Ì2¬ cæ]’œ6ñiĽm%ôµC½ ‘ÕÓF´ÂiáÕ¯RO9…h(g>—7ÊK¢ª¨ü”Bô¤’“ÃBç4o–ç|\ª*1:Þ¥Èò1ÌÚ-Ñ?k•¥èTy)…OKá¡mÆ„ÈEV—D›$S&Í¥•\§Ô3›Ã3DË×ÜÈÍó“ErCTYÊžø\¾ët-ëew­,4ýu‘®‰¥”qaf%úàH™±¬n:$KüåÙOiþ:(%‡óÊvñzcÓBÉ9º%³Zsç1:9rÌs¨džö’ 9kC>ÊÉQÅ9"1Y°Çל RÖÙši¨tE|«7”Rr/i„'™“˼¼¹™3ªÒou)åtUíì&Fes±So7,Þ<ÅÜ3’ѧ¢_꼎½Æj:åZF %½R+›>•:cVÎ7xgª›’7íûÖÍïa‰ [¶d«9´1å²–ËÒ¦]Ð(o»”|yR:"[ +eÞMTö±üë(t_®™¿Ázúne‰å:&·›·âêØlìiš¥–WG)V«l[­‡®Fš7,¼"•IÍëNhÄ6ä$3¼¦s¶›ÊIA¿†äv›O#h»å$·ÏY5†¾ÑÈ™I:é7H­ÉS¶\ùns¶4ό݇X÷ÈŒ‡JΪdt7f¢éÐÉÙÐQnì/ùÈT åv2=¼ U š){E92ç_¢‘¤Õ*Ÿ3%h´C»ÍJ0Ñ]5JÓ V͘‰ˆ&é)Á“tmfss¤€‚£¦nÖõÑTè¿Ð#gè«Õ m9µY)GÒé[SóÌöšÍYDR eÃTtIu!¦!RÅ®dò\Srå­Æ72+ÑX-ì<‘,¶NåaÑL2u7& —Mês ¼DÍ[:›W‰)7Æ–ðf©I³<ûŒødE>+cKÝqMÆ­}§ÔñV?”z>¥*ò¨x¶‰]1kT’cuOjÌ¿Ô+|7±W¹­Mm=ËÕøÚ±®4Þ’ÆÌ»*DtDï8ç+¬Ü7{…k&?<úF&]QN¹’‡™&Ù4G–”IªDŽÃ3JÙô¦BÎu.ŸØÍWGür§»ÛsÛ*ºZåIÝZÚI}©'Å2®Ì᜸B¦“Èäë…|ìqR®˜7w÷|®(ei’”;Í;µlRe[ÊÒrÓžyO¼{¡å´mÉ{Ðg>•O›A’¡Š,ºŽˆ"¿èåªËÓ¹èqÕ97dyK±›~Ó‡±™6¢œk•79Ö˜Ñòµ}¢¢sžàû_Á +É)òe]åxÄcDÕ/‰.ËÖCD¹qâÇ•%ùÇ®º$ºÞóÒ0{ÁÏܘQNqdÈé4É4I†œÓ£†tBvc$E)²Š¸ä‹•Â)¤#giÒšRä’´4rd{¦6Ϩf•7¿›yÉ—!Ý3MWbjß’¤KJÉ3’™9¦<õðŽ™R2VL>×Ù#_Ž" + ¯Hrr$e¿½o¯³X’·©™¢tÚ-HŽ´É’$#ÙðJyòÝ]%}IN³úX’ŒÕJ“)ûrpªh¤Ê8e*"9…¦,eRå4’¥*âtRuwŽ§z±¼íI$-ž’[)ýÝ¥o/~Ö#}]u(¶ñ™˜j±£Ô>¼«b™~/½VÔºH&vE÷›¬·0íRÒJ9Z,:Öë^×g|Õ¦Ç>×d´±îÂúHu\%d÷K²PZ–}±ó;ú­Ñâ—Ñ7®“_¥5¾¤²çäòW2©gðÊZËÿ®sXRç›M"ešò„®.-ºR^ÞO%Éù±è±q ÚRתÎÓ͇'¹MzˆÍI¹šµ®SGr.K+Ó…bßØ%ö¼–ˆ¦;â”$¾Kí¬¥è¤ôç׳+ŠgÐP̆–„b.~zš»*µbnÛ“Kñc>!!7ñÒŠñS»rI¹6ˆi)å£ÖˆùèvRŽÃržøÆš˜‡¬ä~u1s­œ)æJqìß Ú;æþÎ,÷ÈëÌ$wÄ!Õˆž•˜­Ü¾‘›HNOGÖ É9ï˜âóÙ}Y8N»Êe’||›*ËY{‚öUí Dñf/›‚¾DJúÍ2özX4‘LÛž½šÙ’tå­ê$‰ç«“»Ø¼|Ú1eh4$sGÌçMçxwcGFr¤óž9Iˆ÷KþcŠÝ•Q–ÝÔuþ;£ºØ]zfS"IorŽo¾’ø*Ïn4e‡‚Sè4qb9ê>«M¡9Q°œcxNßDYñ¥\z -W+wäÎ,iòâqäpòvEKÒéhíêjò“¬:¶–vš¿¤žÙW&y%ifm‘+ym¥Ùxóÿ¨ÛËA,K^º–<,aY涤Z!Yñ„ž’Îü ÝAÏ«—Ðk_ýBF/2*;ÏJ¯ËºýŸØSã£<“Ü Í™`N‹òG¥™Ô)qPêý}®=)#Ê—ù6ÉV샯dïjIß<ŸÒS¥à¡YIüNa‘¥üC9’õ~ò6„¥¬'æ4OMåîJC¹¦œ¦lJ~3£þxduFÊK¶7GˆØª2_Ò/×»9ùÔû«)Ør$_–7ϦñÏ¡Ókôz ­*„WÓ£™ßÔé¤kRHGy),ÌbÎ:ÍLS +}3´:I±Ê•ômsé4¶ìóÒ.ï*)?sbBA£$œ3³‡¦R—M«¦&ÅÞ©œ‚”d”D‡ÄÁÄô!Zº7O´½5vDØB2'!=?D#ˆŽû]ŽGªÑÌQÞ[Žr¶ÙÝU¢kæI¹ÏåH¯œLÅ,§2 Ú #¬óeçGÀ*»Â²Ž.M‰¾´þüSK…AôwùF—&MˆßêæJɃRš„P‚ÞH +ø<.±ÿãçs‰àTw6ê"c¦H¾T¶DóD™ È_.oµzwÉè‹Fc¨ËØÅ9|¶sÊw ŒV– Jÿ+*žDMbï¡xnÓ@L7SæQ»›™„òñˉm>,ÊNw°é”—nâßc™ºEfçü©ÛA@E"Ÿ¾S%‚ª®:•ÉIOB©Lh¦‘ßÂÊ +pÖÅÚi„±äàòìÇ-oCè?sôÿÇÙ5£r£IPJSس¥½Y>Ž<Å®e©#k+‡ýÈŠG;ë³®FÝpdCHEE4U´'ðR!/ú iͶéHżâƒ„!º n³£³0“\ýÈ_Ó]ƒË WN‘0¿Ï´×h û + "9i~$IàÅ`s³ª7*ºK{¦jÍZ(Á5AŒOå@+Ö€dhϬj«×ɱ‚Hùçš&¡˜¯ÊË:âh/93ª”²‹‡éQ¹jõ55E(ˆ¤êìÚ²S±­ µ|ÕS" €ËV‹@Ì4ÂÆ +) +½jXh.|F69øÔyÇÛüÉáÐOáïŸ ÜpDíR‘'!^âb­zck;=‹p"l#^ÜÓ¢!ÎUAh¾ÀsTÑAX÷^^8`J†ðÖÇ{¡’òI6SÒî-½>»|ü_ÛŒÝXÄ”ý2mlœ" «rð«Ú–SÆw.I°7I¶‹ ¿{ÖÑ"#)r<-ýc ä;.¦Ë`„”ÔQwñ“§ZúN‹Ù]š6fÁL¼ PÊH®äYV=¯pœä“[0k¥~㲤ÀS—¨ðh6Ã5ðµàºMèNtõçäéôÁÙV`R@ýËBÀ­yNi³-E’§‘ZŸ}lôóŠbäI<ügþ= ¬È©¤=% +¯û’‚Ä+d»ÇyŽõQ¶“ÀßôiI9ªn–eþ öó°ócZÀ™n5¢áèeõüË'½‰Ï=½g€/ ˆ›¦xxE—¯iÚ06!`Ý<¼ {ûþSŒºÌ4×\'‡4a5Q]GLI1ÄŠ$«†ã{+hÖbÑX£‹0ž}øc5K#\5jéù&ýþÐù¼ÉÄgõyáœÙ.ËkIÌ*Ë:”6¦Î>8bSžÕØÊË* I +>Ú¦áɺò.¶í™rÕ4Á1Jè$Õ܇…õµëeÉâ¨`šºÀÅ–çÞmŒFþ{Øgû–Ó³÷+þp û"EAqì€G»'Vܳã˜%æO 8€¬Ç ‹:¯xƒÞm6-צý…á_Ì(îáçƒH2T0žà×*ÑT'g~i¤ôiáÂÇ}©X:y½ÀK$²uör~%ˆ­g6.àòqûô~3ĉ?›9Uüw00Œ4Ä™é¦Ìoãîyd7Ø0êÕ?Ækñàì‰ ÈýÓûíûèL~@Íb2R®T¡žõæ‹Ø2·«¹FLe&„:[¶¸Î‘sw­w8$Aƒì’N×vœ}ðeJ®ò¡è{…àÓ'÷žaÖÕó5] vw +wŸÁ&±dÙÑÒ2ƒ ß÷‰S •&[xÍ!ü$"zM,AÅ{{+|ÀpýbÍfNOþÉ1UV¥>âV‚±½e75VÈ iîÚ€'øú@]Êb;ÀÕ<½ÄÏ}²¢ÜF MºáÂRÄ™e„ðüד֬ ¶xŒ^õ…¾ÑN,0cVì§Ü_XQoƪf'WÍ{o&·>ü£¼ ßOñ¤VÆ^d:ƒbÝ8K}ü±TœggÎLo?E}qš³€Ä7ž ,y¥ÖàÐ}úGåêÖÇ<ìó€‹Yd `Sñ¢Ýí|v SSöåýb:\: /ÏûCYF…2¢<–šÑøà»È>'ˆŠ4»Æ¶ôi’T7‘„øƒ\þëNŒÌ±ó×ZM6…Š›Ù0Û +Ä™j3ª°ÉJH hœ;vj°Ü +ʹNBÝ+¹–" *¯Íõ†±é:0j@œ’>°¹È¢Þn³ûoIm{ÅZ¦ˆ&== ÎyDƒ€½ËE8ŒK˜ëE@ìG¤-MžÇœÏ(¸9ïP°¬ê½Ȉ߂ ¯7K{%ûÄ”½ór"XãGñï½ÚþPéCÚ°`Ô|TÍŠçI]âižµ +Ísµnd˜9EjÜ|½— Cûy´ŒÉ##þƒT<ëÌ<ŸRð¢köm‡"³ùÇ€ëyb%Øÿùƒ9ñ2( +Ô5x@0ìaÕAäõºWb;ö _£²¸CÑ‹ÛÜöº> Sf¬`_.Š¼œ½%Ö—;e®²‘­SQ)y#-6ÄÌ"÷€Áʯj9f²!çË(*ü¿.UyB±ˆåÛglrýË°GqrÐiÑI<‡á†úÁ‚èr嚧Kߌ:Ësþ_+Û`å›ÂZKW]ÕfÖx‹lž†¶Sê¦â}ª©k:ÌIÅâÿÊ/ýdû’L$±7CIþˆU.8iUéÔXWÒ‚7‚—Ëx>>6–¢1¸Š¹³¹=Nl˜Ç¸R© ‘Pù³È¬±Ï.p0ï*IžgCÏe„‹µC) ŸÄ£/ÌRFò·¸»`á°§ƒ1ÉÇâã?§ªM­£‰MA;ÉN¨¹T(ÈÐÒécx4„vîâdî´›Á-‰X©œLQñç­q,¿ièÆW™çïHКÃphOZAFŒHŠ^52Òt@/o¹éëaª¤°VÂÕí%%S.rH¶*h¶¾ÃW‹„ÈÞ± ¿xâÍËRƒ@Ò–êEè˜Z‰ÙçYâåÇVQƒ€]ã*4©U÷¨¸%ž\¶Û`ãç_Y†ÝÌp¨™’ÂïÓì–UÆÃhÝ@¢6½Ieí¨³?ö ÙÆr5ñ4Å^‘1äSœ£~=>E•CûmOÉû¤zŸ,lúˆ~ÅrºzÃû˜ŒFAiËk¡0¤’™K¤Ý>#¹xm#YÀÃNßÂÒvŠ¢üwài´ºã‘òÆ(zÐEÛŽH±³œË ‰ šÈ:›ÿ™Ï1;&M8‡ÈG‰©•Â£I}aFdÀ+÷»"@Öù ™¤0x/„`yÖ¡º Xk­ Ù>\tJŒ%*—¤»ÁÛ]hC)xOÜ–J{õù8<$ýoº˜7á`¸Òf³Îyö|°ŒÀ²ÏÛ'Ø®«È}SÃÞ3—k”‚ìÿKÓ/=,WŽ\W§=·g‚þ¼¢ê-S©99TÑŽcù¿øµ¾¿¢=ÑKƪŸií”ih\ÜÓ Ká?ìZ°4á;k&a¢M@LïéìÃîT!)R'Wþhë7BH‘ Mf¹-›®ãîaÓ>x Çž·HYC<êã‰Nê ›½R(ô‹TYš•Ô’—þx;˜‡¯Pƒ‚¶!±ðå×ú}΀UáUˆ¾¿Œd¢KèÈîºävtÊ|z#{¢µ6,eL<Šiû)þÊ2svRÛ‹k“ ÆÀ£ ‡:ª»³ +Ö)?W`r-yp\/¨YÕp>§sñ…U†zGÆ|x€…û°ØRÊ/©–mœrÕt²%«mð‘ú¹ªtÌæ¼C µD@5kóYJáCÏt À$¶ÞZzÈn\ûd·ÉZåxª %«¹Jïè512n=ó dzÚãLR@]󕟽GBõ@¨ü¿ù¶l©ƒ|^NÜó‚®ðV3`¢­£÷ëªt„š2¸7Ìù«OÃÝwÞDU)¥“À€BØ À¢ücübö¼¤×`Re}´ç×Ý©¡UþxÛD‹õ¤ˆ@ ÿˆ號7A¾ hÅ÷úæ°¸CôE‚†)›ûðS­!Fãz»ÄV–ç²ïhRÔò›¦(Kîɲæéjà·=6ÅlâˆIvpU©R–ŽÇækïò$1ô°¾_B=x>é^S3:„ñ‰’Fvb»WîÎ y8z„Ô_ÔÝ6‹ÄUŒ~±Ø{Ãq:Ñ®mÈLê Žæ¡°¶g5.i4Ò~!r”;j^@Æ4•Ø*31@3Äç›M–I€ÅÇÝlÙEi ” [¾QÓ9«Û¶2³éPßRýE &:Ĩ"ˆ¦ê'õC°×ó¯’Xq,ç‹ð¼,~qH ìY[ábˆõ‚~:êkN¥ä”¤‰¢ŠHÜ ˜çf™1~"› W×/Fæ^Z­M*+âegšŽÀ¾Ý†„ôº*~rs0wó‹ßkMbgBOÝzj¾Ò Þ"•úwÄd§vo6×"h%Ù°T +ìµM÷¡Óz‹å?–XÊ‘ƒ”&9ñ!•‘8x£“š(ј™îMÜJÓ‚RO¸)1àtï=ÝdAfsŽ(‹‹ %Xóªûd9SÍ®Ž3+C¦¡mùeÒÈ•rÈ„ÖŽ¥*ŒçL‘;×— ¯×Ñ…þ2õ'»#@¦½q$y'x‹oéA{±ªy*ó¨ Ña-n½´K#[,N/3ðJ«—¶Áæ㉵M˜Éã|ý Éó‡nmsŠB¹¿Èh0L®FhDžÈÆë½?嬈ÞÜÙ/DÝÃô{0Õ}OSƒ†–ÖV6,§ao]ƒ ›‰I½•£!ëì=@ Ä®yWÝ©°êblTýž _î^ïOå­1½!f%AWLÏøn[k}t±ŸÇk~âŒR¡úáèùUôL¯àp‹Ôa‰ò¡~Z>úËêE±«Åo“P±•ç¡vJÿ™%Ùy§ æ+ûÄ ãÛõʱ;WõŽ¢-0àK/1†ô©T§ʨ”8T&8‘רsÞð•Ïí&këAŽ&®ÐÙ© 9Ȫù(!1¿G4šØ|FRuRº%€ ².6h—j>{m-ãçûç¤!$›{·“÷fÖü0Q½px$ßCi„ñk[P¥Í7¸D燷…€AÀóCûD·ÕNp#;ƒ;ìʪ™Ÿh'~ÔŸ1OßÌ$ÝÜ`‡c åÞ&€’ÛÌ6TøÊ z ŽŸÅ˜•à˜Ý~·ÍÅ5ò*7d‡˜c3ý Z 9Ñî³tºµ-ôŽtÙ„KÚ}ƦRê'në•Ä?k¹†M¶ ++0 +ZÀ¸?à´ŒæèO³UWEå¹Ú¡e*®Woî£7hœ­þ3¯iFý•Ä¬.׆gFVª‡7 <Úe¡qj\„°+ ¢9<!õ›î¶P +'X¯¥:3þU“î‰g¥¢Ž5«L°²kÀ¡¦äÑA7PFvÝ.¯‹KAÍOò:J’äcQ¹P´΂NÊpQ”¬Ú`Èá4±Ü+Ê“½3ÛŸ¢G(Y qeÕˆ ÒÑ2 ÿR•D˜ñðNGO[¼é<Òá±VÝ‚‡Ü¡×i⾋9¤T ~ÐM U¼#ŸgnTo¹w­¡ud£ÿ°*5 §†^bZLiËF™MTt?[ 狾@k"³kmJóãy¤˜º:›ÉÀ˜B«…?—v +"TÝRœEª`O‰_7=iª  ÔÙÑ‘Çb§–ôC<˜Û#µ¡ò»¦3¯Þí¸a[:ˆ/ërž.se6f±*¡ä†Ë¡F(­ÏšÒ–î {f)=‹µSàšÖ^€;YwY‚sY@ì+•¸ðNRÖ¶BDtžS‘« àñc„ÈöÌȓ皀!$+[­}¯3’>þãX!š½`e †¸ýœ/Ò¸+-o.’p”˜óSIFƒî C~á") ^µ7o(g!åCezkfa#mjŒ3^«Î/]¦È9sßÀ™ŽtZ‘óølTP9äšá* rYöV¡ÒÐý‚QÔªž *ïP;õdgƒm9 ´ÙPàK“f#¨–Œ;!¬° ·ìRörüz öAÏŒz€î¡¨ +÷´Ñå¦CþI6 ÏÆÆ×_BžæŸÈ‡Ž[P‹?Ó ÛÛ‹KWWVWÂ#+&~¡Ðª[>ò}ѱfQS#‚i D<€aiŸ»KÊàIáæ½xJv~Ñ7mx*CÊ·F¯Ä ¶«Š^_º{ =ÿ^iy¤uÆÔP‰™HµG4» Î|oªÄ¹g·ÝðdGP›vãxm‡Q†òéÃ×νÌ÷--M +ý–g/óç󦑵Jv…Oé:““%È—† = +Ä›ø ê~ËΟ„†MÙTÔ¼Òóêh,rpà&bît‡Üì±:Î/nÑ^?ž΋&d”Z'óæi!®'ƒ/è ↿å `çò?¬.L«ëe›òVvηÞSMÝá°âÃI½ü.‡]6ÛWI(Ÿ Ñ2\ÐêH^ý½S2‘_.k*Å%n¸-„;Œ¼u#™üðò«+4D5=”°Ï8Žöž¼¿¤ $é‡?˜2ð@×ÃÜ{q˜§õñxÑÄ\1¤bôÖT²-]ÀÓy­Éƒñ£”L:l³¸q4% Uxóh+m½+žüÐïúT =p+ñ‰3ÿƒyÍ¢'] ÏE˜@ è.‘IÛîäîîsþ-éLÕÐzú2¨ >ê~°8§’[¾_”Ò0Këdz½b —&ÂlÑ2Î{»ª“"µ ã –ÈÝBQƒlïW+š‡Æ(h®Á§;+“´©Îãny)Úe».¸)VHé$Ó©£Òm¶Î¥§†‘Š +`ªÄ-ˆøÙv¯µ:¥áv®·ûóìÄƶ>s3näãlº,¤ìɡІI‚Á¿jßd9|-Át—LG¿üölfHª¬ôxÏsa¼ y=Œµ8LàÊé'¶-\‡aÂ0è©k8L*¾ý³÷`FKrSÝàcˆZ&W‰Qî™açå‹J 8ù0†Ð·9BxWuÔŒ+ÆÐ#óv›þ€>,°0×n€à[=´ìüÿœY$ën-ZpléëÌ…Æ·ÎN„æko‡«.5î³:§€ôdp©yx+šr‘ÿ5DüŸÌYÝ¥°ùz÷jÙ¸;Õÿ˜M +f‡oûþ¿x<ü°6m•‚2ñ¾£$Ðüo 6 ":p6Ö[Ëñ¥‰ç8Å¥ÏsµSŸR×ÒˆqȾ »e,ºO>R…Šç«ò—jùs}Ñ]*Åßÿ­åu¨Òµ[®ÄâÊöùÝHõ•=fEÿ§CVÓŸrb?11nwìî GŸÉhý7ÈÂsYUL|ëÏ(ûæ~$ñÐ'ߧC{Å6È«%8ÉÇŸlQg+Êæ¢Ú¶h.¤F¿Vœ˜bÈ"€ŠÐxÕB¨§ 'ÙÀWÏþƒ6€³Ô}ò`%³\øŠW¥° Êþ“÷àVÈ—Dy©­žÃ?Ÿ‹Ù>ß½  OOf~‰º8P×/îëžã£Ç‰UçÙXS7;á) ÉfÔ©¡ð¤AµËJí¤U+['ß«ÊzmrPøy×É댵µ£w›Råf¥P-Œ@M”éÝ#ÄðÇ_ɉ`_Wœì¾ø´n! €ó¶gšªœvé]˜Ùxö-ÅÒc†iÇçÔGd@r#k +c£ðƒmß@¡7¢Ý¶¤Ê‡aOŒ£-P¾ ý/Æ*u¯€¬sIÀ¼ËŸjÁ' 5 T¾«¥7E}‘} x¤0.§óÕà*&S‡HÝÎ@'ô³²å°^š”f0õùX¬©©Ãj[äðÞ¦)AEx€%O”ŒUvY]p=˜“˜Ò›NçˆÜp`qϬÖˆ7‚Ë—…ûÔÍÝN‚i׈‘6"„F„äÈUóé-  z²E] zŠÛßpaÔ‚²Üh²H@˜nù^ #¥©B‘Q’Ô÷NÄFaxð ñw‡ä®MÞOqüÔ:á¼øŸªˆbjbD°óÎ÷"•y+)p¼>4ËØ@ÉÉÎUœ k×Ö$µT­ëF$”øCE¤á':k?<áWí>öä¯àY†ù,Ix—h ;ÈßAL¿b¹HoS3ÅœHÌ.~®6¹øûYË“3…]®Òëéƶ@Xk\ XE‚u«Ô›ª}7] ¯¡œÛ˜¡TA@Óð`º)í*rd3g¥’þ®çi[}‘8Ú½¡ùóñàt”UCæÊCÿ‚Jò€§ú²eñ&‹ Ìõ#Wÿ^å)Ðæአ+ÚNóG–ÉÿåzWÏXÅWd蕤­xÆÄ-\djT‚£Ì`ÊpÀgÈ^|"—Sñ ÑíÀñ;è0à¥)ĉÿ&+*xí¸"d +á ?ÙÞÖ&(KS˜[ Ϭÿ­°EôºcÁ½;J*¥—Ä•˜P¨CÁIä z§ìp¬Ta’#ƱMÚ SŸ‹FšüƒÕ¬~ÿ­c:ø’wáÁ~ü´Cèóù…ˆe0¼ƒaÉÃF9G4û”(ù«–ɾ–®ÕÃË×¢ Óþ={Š%ºD#D]<ñ–Å]}<%Á/RMp¡|!Dǽ’Ê–îš»xE6ÂÍ •˜ÁmÊ9Ä` );ÍÕ8ÂïÞ, 1 `Œk.Ú3DŒYqgÉÂp›iD?±b½NŠšÎð«úŠ +2›'a¡zÞ¾»ŽÙ‚—:g߃X„?kÄfè¨ÐÝS,f‡pXÀZw•qÿóei0i;+zzôîŠ%Å”›fl¬a rŸaF‰DÖ14z/®_:NÀ¨É®zDÙÔ<¼ ±6I–L|º™÷§ÔL\ .àAûE0û¤eæ.¯ð¨Ü`©V™›zJÀHøBn­Ï“ú|I.}Òþq»Òõ!,XgE†<öUeR"ž°Ìw¾FîÌ‘Æ»ó'wW)šæ¤âl^¢H=[ìÖ"”5q»Âk•›1{ë…S‡æ„j{¯QÅ™ÕâÈhÔm4úÂKÐâF0ñÔû©;Rœ5…¥yÆxöVÄ\éYcŒˆÄ¦„j(Ãÿ>•–@³ùï.EyΪ’‰SÐÍ×xÀJÔж·ñDÀ@ kZ„Ád(%u`düB;É¡À´{9È?NýÒ³<µbÎ ogî"Š²Æ¦FC5>¶fÕvP®¨$pÓÊï~iC#Ÿ¦ ˆh ,s²×#àô:Ô¦ce•ÑšÝÊT‰¨¨è!¸Ç¬e5VVXäpÏ#tù¸Õ±­i>u+`¼ +çéœÅËJcg?ú.ã1p!ŸA‰? è6l©í¨å’Ì“xB+gÃ)æ@ÂÓû,§'ÏB**Ô¾ÁEÁ¼¼X’ ºAŒPWÓS¬‘Hkd71ÇÌQ…u}cBšåS‰YKb>R“„Ýà—”·©úAãð ø#Ís°Ì ®r«}sT-ì+tø„Á´š»žøw +ÕŒz “RH¦õ ÷fû$®»Ÿ &‘èýïÍ"²òjLU|zAäb@n² ^RŠtÛÐ˱–mmBBÉ¥ JVUZ§Z/$lüRÄS’‘íMãzÆS‡«5Pê±öþ)×ý¦(œ•H)ȸ¥Ü5” +¨BÃjZÆÁ?ž\ätÄ6‡Èax +Dùн‹ÉÓ‹@1ÍxPd¨¢%k‚;n .’­ñÕï£à¬„ÄŠ`ê²Ý × ŽTø8q!,÷üAé$k Þ Îˆˆ[ÈÓÉ¢‚ð™Äó58eB¯šÝÿÝuIà_ðfi,ª[¼E²1"ÀhfýX¶$íº§'®[‹ö›Ð”?a× OQ}ŇúëIV*QÖY#}ˆ˜)÷ I$%“Ö‹ 6ý±³Aí¨qï +ϸ¨a€`ˆ×¦YÒ{±­Ç27âEúÆFØU· Œ¤†Œ‰²l:©H G——¾€¸4§{ÿZ~“R:ÕÝ‹ßãí›9’ +*Õ •½‚ÒˆÖ_å©ÖÕ$:Ž˜T¿O÷b|nÉCAeåŽ ù);RSœ%Y8»‰§ÝFÀz¶÷ˈUÖñ=«³3áëc<$äþ@ª¥q@b$AGßga9¢ ªLQ4`–œŒR; .í(3“qîvJ!!æüÒ]p‹ØE´”¬c§RoW²é{ì;™éŠP‰8Ÿ$P½ !š‹Ívq²:ÀS« ‚1…*ÎDoêìró`XTÏS`Ì݈¡ø] T¹Íâ%nsç xD©RDçËù“U³¶“¾¡£€Y~Ã~Ìáï¦XK@ ñœP™n¦3eø½ÇÀcîÛs¿¶YqGÂ÷»éù= kæ8c¿ $.Ü{ŒÃ'Õ°4Ñ'çÙ]ê~‡£¸ÖèðéÏG5J|¥À!šÜŠ-vžÈTËûG2"ñ„õÁ‡X—ÚÕÙý$šPKWF·@Í¡EÀúqdùÏ0(r"Ñ^ÓÏ“{|n 90!éá¬cNþ¹c]†ýy2sG¦ù½2¾Læ̶趠^‡È5z¶€=ÇUðåsl°az³¸dý'xCF~©NN_ƒƒ ¶E&ïÒ8È ‹&_ÀšP¿Ô–§Ä»ò¸˜Ð5%#Föi×YG‘¨Áï᫲“ïæ²ÒkV׊RIË@î®pâü›±i î\éIbÜŽã’;%,º¬]ý\¼æ ý^¢·ª¶@'VRú“©¾R¼¨vPÜ ÿpN5¬m¤ž€sòBRbë«œAB‘Ölí‡÷°ðÝEMñùËÜj,há+üb¡›ÁúÅþAèû#?ua1ß1lðJ{@ÞÈ»hÀhUõC" ššZ²£ÊÈÝ”åÊ•p$Ÿwš©Ñ…‹ 3ö„ÝÙ5Œ®5MÉQ?ï–~¢Ò[NU/§¿¥ßI¨S†§â°¡º¸ºèÕÉ¡Üm àðÔkcG.¾}p„¡¨U73˜yd÷/°À|^*©à£÷J•¨Âðj*œä¥³§ÐlHÖÆ}—}VAóˆÎñI™8TŸ4:1§åJœ%¶¹ì :ŽHað&éN Ñ™¡¯«™¸Ñ;0Ê€Q®¡«Àˆ”*€{zÓ‚w†ÛÂF¡D"þÜ®ƒ³O¤³;繸çµ÷¯lêݘŒ´b­k-¯ŸFö‰¶o}Ðñ™Òqð±£ÄÑ”˜œÁ-È~ep­tü:Ow³—ÕcWLÏb´Ÿ±‚X’ñq íÜ’–^÷yZT¹-fúÛÂ,èÜLÃ3ÓçÉ­Múq¥¾¬íè$8• )†Çfd”¢K®#´¶úÙÐÄ·òä /&Vÿˆòtà_PË'¦3ý}ñ~L>l}9âM˜·$èv…wäê-æX(˜\¬‘‹2¥ò£†Ìˆý–Äê¹pB±aÀí‡B¥`ëÆ.·©¶´Jþx1!-hkÛÃ!{õ"5\ Ÿq#6KPnº&,qƒ¡<èÝÊ_£‡¹S­)Ö-ßËäóö/ò{ôí˜O~~³)rX:™¡¤Ý†É°×Ø*W³[eyO!³ÿš_ƒÅî“74ÓC¦%îkÖ§8mZ ÉÊ#7g/\R¢@uÄ®í­:¨‰®iwûå'h¦TuHM!æÊ¥ajŽÊ‰áØC¯Žö¶Ã¼cFçEÊ•Õ&À–A`S'nÜf/‹àoejŸn˜j/•>ŤX,"æÎîR–;\–˜8–£æ6-)/¼mÂñlS=È®%s»1XL_žó:Á·5i­€}`[ÄÙ_,dÕ-hkg-»ÅJöX¿V£ý ƒþ£ÍŠ+û~¹ ÿÿŽ©‡ž €6ýK §;E–±8Ç\¿ªÄ(<ü« +¥h”JÂÓ¸le<"*°–#çhuÀ`!1êž ;”|g£¶p ;é` „wc)uL:c Ž`> +;l‡Wˆ¬‹G_æ0=*H¨£•[¸Z^á6iy‡³Õ(¾±ö`¿ÔMÖÁɸY§ù€‰Š.]£0UËœ;­ÎØ6{]oÂáŽ,ká¹WÇS¿Cˆ>(¢K Oi*ñ]ˆþÆð¦Žj•boWS`ðs†€Y¬­ÄÅð£=2á% ©±X$Db1£Œ˜¿({Ñ#ý(“Ȧ6ço¤£šj¬aûš$Ùr}*i®¤|*Kï§{6åHÛ‚"~ȼ >ÜïÆU)Ná½À’î’æKþ³I‡½331ÃáWì7 Q5èH;è‰E1¸%Z®ò­áwÆeâä_ÕkˆÓÝ„I³ÊxƒÃ:„ .hìèfÝqñ‹ _oÝP :àÚ{³7•ÐÈ^pÖ`tÏ +H~i±cÜ5”ž•cT$çþ“ã?¨ÆÒXž%Y +Ã¥Ænãœ~”G\b»}kþº½Ò‹9ó˜cº½¥zpùȨ)”zE™âR„êßÆ·+Së6iŽûù×ìtD”›:“môjˆ°Åæ&aB rŸ>l‡Åà:Nô¨›ñª~|Nÿ08¼†-ŽµEÁï/Û”€¤hô—j cÔSsè ³ õaéeê RÆ š(o×áÿX"íÔü¾þÜÂ,i=ˆ"¬×ŽÙUaéÉL ùe•Š=>% % «!4³Jü \û:hŒ€‘?8ü”†Ó#ÌšÕ¡U¬;'˺çõ•Z-Õ¨áBJCì*%Û¥‰ƒ½müuÄ9Ù¦²ª­…¢¬¶çüÒÖîdÓFBnhÄn>(où„c^!½P°”Ký|¨úDõº¢±N›G¨|/Ñ”‹l™É8T|à*¥§‡#¤Âl/'í _v¸«ä/–êΰê|p¨|Nsc÷´r<;vÇþ–8ÍT\mÖ|Vh¼%ÉÝ Á*ÖVàW² F=£ ZøÖ<´C¬­̨AÔôŤ{”àrãÕ?N"Š‹J× $™á\,‚%ýiŠÏ(j±‰ =px30£ÕO´øĽ&î™6­-ôE2Li÷5"¾¹8#Ôö±OäØ``ú î‹GŸÙq¶„xã´<åÔ(¦ÌüVÑÂnØo0ª†°PŸH>ˆ²ž“¦ ¸ž`­ä{m¹`ÇèçÆkgGŸ %FØ4bäCz“ô[^4¡û4¸öÊ „ó‘Íæ]"aÈ»Þ1jåÄ€¤ùX"‰²)A²ÍvKReä' +nØÁÁHuÃxg•e¡fnÉ:LŠ³(0´ð3žHU@ˆwÐCªršÕY©p‰žÆ¢&Jåarß­±zZûbc1"Hs(¥"Ê2kVTà"³kœqßÝ9ž¶j5[‹¹J‚FœEBK_[*^å¹ü4ºW’S%ýÀòP‚Љ:·Ò.³Þ1ŽÙèai8õTXÛÐ<]¿‘M̤™ì¸H²¶Cf ÄŽ#E`†£ƒ9Çm†b’r¿ÄÛ¹…”Y†|’²¸Ì‘ê„ã:KÒâRîAj±ÀžE Ïø"Bh4T6ï ø³P¯DqØ@S·.P2•ÇmÎ×­p8Ó³ýûuõXÙ€,P¿ìšVÄ2 +jŒjúÖQHe/ĹŒÐ$¶&üM!í/ùØÀ ƒÇm‡ $߈y3 ¯xFÆFZ€äº(8Œ(T°awb +u½Û2Xžïä•èªO+CûAF +\½¯“ôÐntbZk"i4îŒìðÇ=£˜Ò±äq¨JC7­:CS#f"¹·àx1ï&ݦ’¦p(ÉùyW`±’4Zh.ƒ,n£¯’Ь Ø=o¨1`V +Ù”Ã#ZªÒ§n°x¢¼A1ŠáÜѳ_š ®Æ€ÉÌ·ZÇ.¾O—ÖííC“5Ï¿EJuZHÓ3½si­É¡1ƒM^‹]<’z°ÈŒd\ºXìº.å dZƒ°þõMßuâ…QöYîÞÛu8:֮ϟ=Ê7T%*k.–>hžNK„ûXôˆ?1€x0KÄ•JkÒ™4øT·¦•FÎ@Kê•ëµ¹—õz¨ú¦¬ õhòÁHÔñß ÿ,·ÓN?žï!@M'ühÍk²„kØBæ‚ðïG—$Ù-÷æ) ³iM‚|M0Íœ¿ y0uïÖT¹Z¿9`±yƒ$åURßkâõí»ûäï‹\¡¸oÚâȬB±c ô`2µ®„éÌjÔ<=_’U"n‘¤ò8#.…~wWQ³º!ˆÅOe ’Ê«ÕF»fî]ª¢LÎ"¦ÖŒ·úƒNRç;zšz%…Ä¿§i^F•¯RÀ.yŸ¯_Ë6ºx¶hY³|øž§2`*=ïðÉ…@“ªa 3š»†SD7Ïh#Ëm©RýLêӾϸNÅŽµ¹(eFÉ£€lÂÉTHW—j?t¨@G@k‹`uÑ_Á„Ø@¶ "ô¹%dÿÆÍ€?äÓ9ÙŠIFéoÝعüQe8-\þ7܉!3p£XtA*F¸ ¸uKôJt‹{Š›™ì»„Ô¹¼ïÆ¥gØ#5ÌýcëáÛÍyêÒCšfÉÀ!nDÏâ<´,%HæÚÏõ2›ÍVé¨ü ++ì·äK¾q?Œæ\ášYHdg©°fFPþµ›ùc„m£ic­–µµ–ÌHt˜Û6ÉÔŠ"Ó +a‚#³Â¦Í³³äHvÏ!´î°|?Æè$²ZŸå7᛹ÔöW= Á¦nþæEÏ×xD@³F¬Uñ:N:¨ +#¬ÅÞ‡5¼„œöýnô]Œ†ùOïpœ½[]w/¡KrÝ2’v¸õ‚ [›Œ•¬áöÒJ2ÿƒß²Ô}˜Á™™¦[MA:cpØå¾v¥ ›*(ÖÜUPåÁÝ›‹yGÇ€Í`¢ß¢˜ûq´\ ¢›[…šÅСN™ˆ4›! +fýk‚^%c!0*â©Ê{“–KBmn6¡àùoé{ ùàó0c@«cC¤á5ü}71?\w-(dëW[\ ø‰“Ab®•?ü!ýa>é;}>, €•„PäÝñÊ^ܨi Q¯¨¾Ó´ÁŠ¸JO=vÑ–Ûåvr%¥}ˆÀ::ƲŸìg!æ’ Ø¨ÍM89³i©Yx¿µsµ•J¸þÈ\”¶&XmÑ…€/`; m+½¶Ô¡í¢4ÀSÈ|l•-,ºÑ  q¶uY¸RSÈ–ÁñÏX%Ρ½Qù„!ãzä”H4̽«ìîªÿ É•ú¤~9UzO6½‡ù[NÃvñÚ£|Þ¬d‘.‰weH<ê]üš0ª÷Éd™äˆSkv×ê:ªÇ^É É¿|©AÁ99¡|N«.°¸Û!õýW*Ô‚Wª¥õ¬¿Že€Ij4¡ßbpS¾Ëh¡ÀnD[P(ŠD—Âz¢†åNH=¼D1Lž¹Î©Ç³Þ£–ÕZ+¥Ð#´IBWÊâlGWk5Èt¯uöIY€½6_Ãt¨z[<Ä]LCY(7èÿé/íͼ™&À~  ¥ÆÐì$ÀÕm“Aµ¤ëeOàªTxaFú/µÿ ?'hˆvÌŒÓîLç86Ÿë*ë–×7YX`áŽhÛ“Zúy¦&1«ð?4hé` ógT« +H(‹js…'ž0å÷O€Æ7`áÅؼݨ=—±?Â6ÍÚ"«íOR9?¼óŸškµ&¬Ÿ D2+b$ç LU™ë+áí]y0ÖK ea™ +[ν¿þ†Û·]Ø£_™H©ãšL2¿*?ã‹¥ åIËÒõÅ{vr×ø\!œ¢‹Üfq ™;FÍëßqÀÑqØŠš­÷üyç*+~‹ò#-£/ÑtðWAÑX¬]ü–í+^¿)‚Cà k“ µ¨ý?‡Mþ×p"ù3!Üú͹Šî±ŒÀ"“{Àæâ¨óXVaKÞ‰±“9• ¶Iþ=æeZ«¿jèC_qm+0ž$Z°SVG‚K¹ê™V°ŒOçî;KÅâ WHàJu²¬ë#7U(˜Ž>GûÔ…-H˜JÞhê Æ;´¼öü¤ê˜i»t#'ì~Ž­Zð± ,²š{h‹a5„oeÞÄ€@“å¢à¨€©+VˆÒ٫ÙՊ·'+«¨]WÈž",y-l@ô‘Ôã¡LZÆæ +1\åâö׉ÓÈkáÔÍíè£;fÁGW\msAôš|§xÃÆ^ì¹D˜ÐBL¥;QÌ£kçO’ìTGih Ön½LÒÛ†yÛö«ïBÒdHO7en[žìäOܺ£*1wã¶Á½Úˆ +×½êc×ÃSI"ËÓÖè 6šõ±ø|(vÁW»KÏŸCÏ@š¨VÁ“K]¼Íƒßöflaìˆ?cg+öæöÉí2Uè’é×ña·¯NäÂv:{’)Æ×ØOFVie6x߬~ tûf6·Í1(ÃàV¯àeMi[©ú¸A)y{—à3Ùg¬9Ï{RŽ~=Ø¢#bKÊ›]ü—’×ûôiµxÒð ÿ“—ÑG'áâ_oéœ@³æU/‰Ô¥3±&;—§÷4‚ FP©Ë¬Ò4dªª’«¯ ‚!¶/ÿ•±=}ÿzâ¦}MZ*¼ßf—oqÓdr‘˜ú‘ÙfPÌ]«I§&2±í–˜¡cg@+"îoQ}´ &;Š¬NZN꿯[YéÙ¤xnC‰!†e+Zs¥/Ž‚ãÑc³™Äº6ûŽV0†¡&ÚOcæ>e·×¬Åƒ0]ÒÇÎz÷òáM…ˆÙ]í%Ôa’óÀ‡Uvl0óI@ƒ†'sZà,í¿QéU¥þÄh‘‘’^xõ 1:hkFón"´àùŒq$Ma²¸– ¢˜˜×YÁÒn£zg›‚K¼¼Aòrîov/ľˆZ»‹¸GÛ«~Nžrë–•Þ=‘{ó1²²Jw>}@› 9ƒÓb+½Ð¨/yÍüÖ¾zÆ~òÀ¸KÒö PU˜’蓵Õmú&íC—5D¡ˆV.wEz¨£1”àÝ4¥Ðßúd$ÄÕ€ÄQô)˜­—ÕF‘ì}aï×4ÀE!¡^(’4ËÛ+{+E8ýÿr·,^€JtÚ\ªƒKOæÞÆGèûÍ0mÜxõz©pý-Ý'ðžZ&¼.Ä x€Ü¬‰CúÆ,¥r8b* a-+°›O\š­ÕiÜs°¬>ß +Y!v‚3­Q‘ÄZ›Á+ÒGÐc(óg©K|¸^|¸úî¡p,P»Å–Uç'¬³êPˆÃXÈÁ"¦T·²Î À·,¸¹UÅ Z×’¶ÓÖ´—ê¤ÂQg(Á”àS÷xŽž*˜Ï!*K?…4J6[\Eá)%¾Ï¤™,"’欻Å)“¦¹ Q~½¼ÛªÀ$qt7nZµû=ªýo´ 2°Rñò–\Í0ÎW`€¬qìKT‹:­¼§Ê·\À`´§ ¹d¾ÊnÖÖÁäfÄ?Í‘%(/FÛí'Ðvn&-:¹ÛMÆ6& +æÄ8@µ† +:Õi¤W9àûÜ΂EôN(Ô "—šF1ø~Aµc!/Ö:W˜ˆ-`ÌÐEQ+ò÷C ç1§È¿t˜{ ˆºÁ] èoMº£ Jé«ôŽÂéÄÖ£$×ÿ¼ïý4Ððˆ7²Ö<æ4i Ÿò  sgP³²áye¸¨¬,ÃÉ™ŒL;Û&„Z“M^Ó‰ahFáO £Eªº÷ƯMÚùR EÑØSû˜³½V-ÐhsÑJ-ž˜/$ìOÆJð,ÊàÉÙã»èz‹.ñÕ½×UŒÐµ–45è¨3ò¨•DSЊC2Ï,Q¯ˆ ÎlWÓ#i¹¾'4,S.Ò"ô™²`ê&«, ŠŒf°‚H¨ˆmïŠz¨‰|¤Ë,i@ÞÕÌÆ~LͦÛ"¦ÒžSÆÑPjƒî ŒÅ’À#ºBÊÜ.V~9 àb†ItqÔæ6_¯¡‹ðÖ¼Ô1¶¤çBn¸Ò`¢Bû|uËYZ#2ˆoµÔø›R©`NLZ¬ +æVlilÊ~ÈÏÁUZ ¬Ø-+%ý'VO‚VÄlá2Q)ˆ(Ø:@†H̵pL~6CÄz%Gµ×f÷ÚŽ€Aá —1€v±”“.BÍżÔ7U)u ª‰àÁÒ1¿ÜOEêàE©¯+²ŽHƒ‘{ÂPè|ù˜0¢>‚ô¦Ç¢É]úÃsgg¬u_Úϲ»%Ï +ö„Oñ69•íâ«|÷›ë +"vÑpà ûE+„*Ð.!ÎdמÉâ"Ó‹›îI}cä]>œ ÝŒŠÿé€9C¢Èˆø« ¡Y£Gˆ¶ÀúÒÀ0µˆŒNqbJa$¾/– â_8ßåHiøtQj”=yÜ‹—·Ô6È9é€èT È?‡ðÎ Z2vk̺{Kö{áB±§¸¨ÑÖÿ½Ú"±è~+hº“³zu½öû-çhd­R—€O¹@¨mûwÉôq&–›¦žAÐצŠkž{V%ao ÜÌoúé!„ì—G¹¹fþÉö·ÛsÏ ØlµÇ™dPYE³âÏ{kÝ,“(*@«âNe…J¾\é¿´ŸtŒ¯øÖîwxTPk :Ô£¢FŒÀPeÉYHö„ɅCµ¬Ò½¯&¤À³Ø‡·¨"[¬È´#/Ê«ö RSAnH2Ýõ+ͦI¤­` Y(¼ê2p÷@Îÿ%|ûÌåÞŠú¦hq’£f¤¯F9êRÚ?æI !´¢sÖȈùÀàáoHlxJ¼Æ|K@×£B½+"êMo× 탿SpVþ>Øá=TŒ9gÊÜÆ9%–è¸K|¾H0 vÚ{M–ÔéÊ«»„W22Hµ®<®‚ d¼úñ¬Ê³pÍç;,*¤Iõ|PÿQÁ†¦*™‰®<½á*B8òQ¨:šúë4¢<]¡Î#ÙzWœëk\•s%2B›Qó…®O°(«ÁÉZ«ý]©€š™J•#Õavƒ˜ 6Ð÷ü}D`•Œ#éç6J0=@›è‚vbGVIÏoÄ·]"wѱ~w m¢us3ßKŒœÙ±ztÙ AD2»S¨pì%š4àŸð‡Äq{ë9ôaär'à§îE•.'ºqš¨úÇG—\_ë%ue쳘[£`(;Eíå|k!´7ü<<‚@¥ifEp´‘æÂßyoMOŽ¨æcÉä=çÄ\ ŸûwäÞ'\¦WV!$€XÀ/к&4e*`­j÷Å> Úôwr ë%;xP±ÿz–H¼©J¬ +ñöe¬‡p +v—Ëïã4¯Y´B›#”›I‹Ô¤½—èn­Œ FÒ4ƒ¿.†© ÔbûûˆÝåYüè\ÕÉ÷³‘z©¶¨F[3›‰½þ-.à/Åi??õz”VCܶVâd6kkÇZ·1ø-ctÀrU)!å +RŽŒ/{¾F2¹†û0ªJà`a¢™"íŸ×ÔÊ(a¡ë—,–«Y3)Ë"»sâ·ÀF ¾Ø7„¾Ìh9€…\†ÂK¥³/ùWtVáâ!="¬£ŠÐãáHŒ[*Ù7 ‘=énáiYÍmÑûÑâªpsO±]ž7!qÃN¢À-?-TbIÚbŽ¿‚q‘ËZpsÓˆÛM¼ch¬¹£ ОÌ(¼ú²å˜öúÜÑœI#]¿e7ßæ:ú³l\,p‹h®³'#f4O§bu *ÚVë(±Û j ÍUG7Hð¢¯m}Ü Z3JpAq{~1y1餬j9åN€‹ˆö!<u;:›¥¨‚Js#eÈ©Í–)ó³ÂÍÿ¨ËË ÚÿkgFÖcûáâ¿ý²àйÎô¾Òt`>×—„øB™—á†z´Ç:·lÑlŽmH Ë–=¹=Ï'ɹùd0ÂÊð¹tªH”ùaxYø¿îqóÕU´J7kŠLW½:g^d÷<\á®ÐÕ3Þi“æWÉdd¢N&ôÉHjÁE@¾U#‡]–Û¸ìªÆ@[P–©t—êX¯{P\¸7´™fÃæ׈À!¸z<¸ñî ½yŒRƒ$î$+èj¦f]ª×Ê4Û¦zBw¥¯‹gˆ*ÿ´®ÄåÆ„á½[ÍØAðE¨*$«Û…4‹UÅ{9áRë̪‚…ýÇÆí_|"qEHI Cj'ßüNÛ}¯Ç"xjâòJ£ëΗ0î•¿11ô¢îÅéFÝ‚=§¹$IXhCLM7£¶eµËÃhšmCÊæL¼rž¤÷@‘fÅì'¹±!VJýœä<€Ý÷x†yx¿õ¼I³Ec —”F Âý|ª&ú4Gü06P±~<™Go]ÎG¶ûà”écq ñžüÔd¯‘]9z'–³O,}Áz^6kŽyÀS‘bToÛëfOágžàѹú1’€a@GÙ”]«D bó,(@T~0}>ìUø·‡˜žP÷>g~ï0 ýì|ò¤öÄïîúû¾Þ^€‚×Ð'ŽÍ¾ +âÍÃàaŒP\¥øS¤38vëÚ³?ÐÃŽ@ó;evrú’sH>5Ç0qñQö›¹Å +ˆr"±j®ªef@"Wz÷ÓrwfMv°Ô/ÀA+UŠ|¨$,Ã"à= Ø5¥ä<®Éþ0ëZf+}¾ÒšäÅ^A­tMÇ +6a¦!>6½òšžT¾bf­nŽ‚i8n+>h߇ªhð¦4WÚ$&!'ˆ¢ÊXoj‘œ!Mí$^¿J*-&In¾JWœ²XÊ%m=šò‘® %ý›ûŒ®€‘ˆå§k[ºàÓ6Fª»k.ìËÉ­¹ÕÓE‰¨ÃvuëƒP ¸34 +SKtîs¸8º5q|ORÜöƒ;´£<) ÄßÿÚ˜þHV²²½šq]¬ŒJ¯+vfP8d*ú3¢9Ž/’'Ã|ɉì$Z9Wëð#gfÑéÿ ã'3¼ pß5×™/Â’tª-£uÈ’ˆôÃS#çK‘q$¡Ekm-:° *ñïÒ,ˆ›Ùo³QÝùnâXWóôŠP“ÓÆñÅÝ2W›«öC2´ð 38E|Qµñ#•êFaE9T€À¹Å¯2Däe]L­±Xd2“Ÿî»Ç¾÷œ–z]?8Í{¤=³¨«$ük%“8Øp-é‘× 2`1€+4„ì™ ¶¦h0æn1—V˜$FŽ nxöÙ.ô¡…k¤àË”Œhõj>cõÆp±ÎwñÈÈ:“îm]5†òäYáŽÓÍDÌ +P$-„ øk‰skë—0€É@0ºG†u˜‚‡‡ßnÅfaBœÏÄМá6¬ Z…4z*‘t)AÉ_QR2 þÏr üV!wMî¦#IS@¼‹j/ +h§f¡.A$\M8»f¨˜”ê…Ö2 ”ÖÝFÔ‘³#Š½ôóˆÔºw>HA§œ<=ÑÜYjQzI´3å?‰Ò•ïÖ +œeàÁ¾d™ÜYv4cH|’<ŸÇÚƒ¯Øzoxøg €¬Àè€$ôDÈŠåã›['ç¨üg¤ÁyGYV»±ýÖ šmê]‡ö€c–1›¾¤fZÏ:!ŽQnÆr¯Ê’ ²]ðC"ÇÐ<ŽŒ‘Þ¦¼"'dB!°“VKùÈq4ìy4äŽ{hdƒ”éß«Öù+|~æ^]'Ïôc9+ð¹¿ñ»@4F!Ñi󫱋—l¸ðx‰Cs±YÑ0ƒ«*…ê-òŠ’¾æïð6„%P¯µN+tè—æy÷-PuF”%¡±KºŒ$“ÇSÝùÀ½ƒ…Df}{ª™ +éú¤ ßnîE¾e˜| +ÉSÑθäýN9.ôÄRÎN@JXøȉå¾KCKGAÙìûXuµ‚ Êöüçh© ã0j¶Áºé…áYÛ6€´ÏšC1W$Ê¡²¼Ù£Ý/‡šŸq݇hàÓ|´Rk)‚cl·x›ì¬š +ò‚È)8óO{} ­+ŽÂdèê·íÁãì± ÈRû¼µÙñ8xðÀ³ûšâÜ™—Ìê}È.C<|ðÄb·Èí7î€7c6‚ž¬~•Â ½ƒ?1€p±Gºñ|)t ’†9Ãn²K~D@8fmž%a‹Ÿa‰v2‚QÙ¹èŸ%¥‹QXXÄÓõo9Åp‡5EÀ è§p¸ÝÑJR–Ç”4õ·¯ði›%x›Š\%.HÆ©ÓWr\ Ŧ¯=›OqŬä7Œ=9¬?S…Z§0ꜷA >ü $Öê¢-V1+£|ˆgøš’I¹Y`ÔFë…Ö³7uq~ß6ÝTß„ ¼""IÜ!Û›°û §æ‚‹F  œ¸t6 +†Y‚ãnIŽûÌWò‘RŠ’wÖù2±Ç%Ò4‡(±>k¼¬@­²!Ãèá«}NƒR|W¶i墩ü;ùc{0A!d/m“&hÂEäâ‘'„·ÇLköPÂÏ Ù›Ã–«& âË`ƒ_ž°ÓèÆr—|h˜x6µ!ˆ&h faòªÿÊ7™( 0=ú/#« ì7ê€ëý ìßÂ:8°6Es +s¤äÉ)|´/]îKV·û@FŠå,H¡þmdî^úZ›PR%þÈ¢`+$ÐÌõo>$ƒh\lÒŒ„¤W…a"y+¹ž5—5a–vbÏ­ªß 5z@}þ›¢ü=0CyÖD;À 8ìJïŸúƒ`ÔM¾/:9e¨²§ü¥Žw½F„e|Vþ,Ó(!Ô=ª­æÔ ·šÉÆ.÷žþ ±ø*·p¿¤ÁB[ 2ïåž6ŸÓé§1Õí=òQÃ#À»ê«H ©°ØÃúì@RŽƒœÑ'œ¦Èuï-&Mˆ«†2§ÅCL/{¬íð€¢“ö%>I#¹í›aì, íèœpÀ*‘xö¯ò–ÏäFàôŒ Aºà,­wöB©‰ +’˜‰dÑu|ìcÝûU;É )ÉòÓŽœ÷"òq¥öQj™Êů¶ ö0ÓWl¥ä¾”öÓAu¼²ÄIÀj7§;œ…d¡.Þ”´Hˆæâ”8T±ÕqFô)¾”Ö¨_ºNŽ‰À;† }€wÀz“=3§¶`.T€«F +K2©€‹—ÝÌï"³'ŸnñéÍ蛑SzÝÙ¦ˆ]eÑÅpðÝq¿‘`‰šÏ ^®1MW¹`©Ü'‡ºèä…a×â0•õS© ­aܧ«r—}Ž´EíTbÞËz®¥Lj…ÀT½춎æÇÔ€Õ:J—ƒõ«Åª‚ö%°]lèöb¦Ð¥#øÇ(øµúCŸÝœ"`ŽNŒJºBé¡Ò¶´…¦tìÚÓÙ¡L!K‚sù‘"¿æÄq`ö×AF)Ãè¸tTÔ¹;Ca´štŒxXÌ÷ÃÝM•ý@/€ÔœøBTqYè0MÀ8Ñ}zëYXNA›œ3žR:.Ûnlè”^ëÈ5¦_'·úÀ©5‡×Ž›ºÛÚ\®Ø˜CÐ4¥A߆†ð©´lW@ šÖ¾ å“AUÑ„P³^m1Ñ£¹¶ÖM „³U½K"ñ*«*}B¤…,kOxzšÔjMo…øá'œjJòÁñ»’Ü ´nÕýnûhq`KŸ>ðk3dÚZ^‚=×MJÃw$ìÙÔ€04+ÊÕÎ/@êX\ÁìO°ž(ßl5àÖŽ¨sò 3§üëðK¤ìå¯Õ¦K9ê$+áYûŒ•XWn%´I'À²`zbµWÚ~ÔÜ„¸€húÓÚÄíCiÓûåí•8K§WfÇÑ)÷ì?ÌÐ,¤Ùf&þ˜ÅðγÆU$¸ós9Þ‰Õx9ðL쪶1÷ÔÀEp¸}Û/^KòNˆ’¤ +ëò5ÝV‹CV˜Õc4¥M–¬~*é*‰â'KÊ sʤ›šè>©»£”˜ƒ"€#Šc2ôY&{6½`nÊþšŽ_|]jCÄa¤âÎ{/P†™Ï2]‚«? c6×±>v0ºÿÖþpHA]¨Ÿ’"ì60×va÷Šãm\Å-‚.É'~’ÑåhõiîõÒ€h÷½µä>óe Ë/äø;¤!JÅ)  ^7F'Úô«§ŸõJÑÄ`Ι(¢Ü‚˜k5'<¹ðvh¸óàÂmìþYn¡Õ8ñ#§X¥e€œìÞ÷€‚†Ä.\âjêæ6ÕÒåΣª•bH±‡ãwW‰JÍÝÉdT³Ù ‘…ÿ1kÇ×–‚²RñLħ”«EB=3'E÷¢ylïõÄ(w [—L Y×íAÞŸ…Àor´ÍÑóZƒ6`‚l/ô<Š!‘¹5´GŽ“OŒÞ¸cÓ96±±v%3Q0£`Œíhµ( “¼ËDJEëŒu“9(;Z²aÄÿq`7IO}ãºÓ=#@NB}«ÑÛÖü2Ç/M¥‹ SØ®vL/,«äÌ’‚Ù~‘w¯ø‰¤¿2À1ò¸€Íÿâ  º.fªõ6pé`®—]²bI7ñ«¬©r©Î6¬j]v%(Júç$[Í(2 Ê«ƒTë>øñéÒ'Up.@?&»,-èó:‰[pé,4õ.àóŠj<_8ÃÂß8lÄí¨o 7Õ€¤žHS×jþ{‡b Wb¦pZT‚ûØ\ܯàâ oÔïÍ!ê½k:V^Ð"l¼Äp¶°ètBý¾Ý4æX¨Æ/`;Y麂‰j?FBá ™ñ£þ[¢™±Œ~ž×k43x'{˜ 긋nú¾FWUB¼R±K¿ÌZºXPæéµÈg1þéV?RºPšÏ4(ó®Ð”åV†tI±=*M»î³÷k¾è àšÃÐý"¢Mßk'QÀ¡{!ÉÁÅÐØp ¡Þs·zú7P)ÔA°“¨Rq£:,JyòÁn’3ï@¦L]|œˆÑ]Öq Eÿ’OZÒa³0¶&e+^âÑç±[‹åð.+sì°òò2¾syŠ;l¿¤ÉŒkŒë¡ßG~)jÙ±4Ǻ— N[šYçì»â í•vmŒè›Ùûüª„Y§¥Ìê+‘WMš*Ãè„(!kÔl‹%CŸo 0Œ’‚©9Mô*Ï¥ùl¾ÆBzŽ_bnhŒRfŠÈÑíÖ½ð íÉJÏ©Õ°þL‚np5C½öŽÕOŸ‘V395ˆd™z=£%/ÑÍq“/Îü³Wÿ鈴¢8h C’ƒ7 z3šÙzB‚Bãi¸ƒIk04U”¤ÄR-KY¬µjèÝù5×ÞwÑR°ÉòÎ4K°ÙïQ¾å¿~å¬a˜ƒ$F.!lp-x‹U@årSAä*úÈ‚ªñ…(ÙCd§KSUæLfè ÅŽ1’÷L¨dî,#owÆ_[ŸØˆ¤{8άŒ/Öcz»øA#³ø! ûÈÙ\Œ&åla–À†>#7_6 +ÄGÄt:ª+ÆG0úª Á›¥ö¦¦>Ú)UÅí•óç.æž3ù `M+-3&~"iÄLìïMÚ6«µ!Æ©«@yx)l¸âd0EøO÷ƒd¤T 愳[ðzÜÉRÏ€ÄÂÄl0Ü3”/ÒÜdÍN;Í”ã£Î|ž9©ˆÉFúŒ¨0D>R­')îúô)œæ#>!* ÑØ÷ˆã\±ÉvW]î°Ü&’A Áï Ô¯Û|kÍl΂5yc>vKBCÇèÈ~.äÊÕ½#Ô‹yD–„¥ÁÖâ§ýRG3†þö´‰tQ€·jnѽ+È ˜ç~mz¬Œüý?;®ÜX•€#nŠ"ôs¡–¤zFPÙ!Ö¢¯‡pm¤|zÂp¤«ƒ* ÒÀgŒ>Ø™-Œ˜Á˜\þ$£ei(5•9Ý28ÂüDÆPœêruɳKóïrÄaÐŦãh?š&¨ÐÀsÆ‹EÜïKNp-p{ J)Ö[teÅBm*³b¸U?Î2äQáR4ÒÎmá'6.«A†wÇ$ÿ\ùMy…sÂa¤5ñë – „Ó±XŽJ^çÄ ƒK£ý´ bfÞàò÷‚â-ñHÈ÷”aL-‡Ù6Ù¹²Q6ûëºuš>œáHMïKJ.âáUÛ/êã2-ÁÎYN\G#©†ë¨Å†#A¬Ö×>@‰±„R§ š ‹îFˆœžñ„q¢Ü~Ä$²~×*9ª`s7å„Û¬ê/iîž‚?"õðF¥v‰K,—¼&¶g/˜aìçFÃ{N±+V_ +_¤ñ‰'LDï•M¦c—Zó¸Hs·ðñÆ£¤RïɈL;‹(F@ž2ëyÅ~—S`ƒOqÜ{L»Ø¬$2ô% >ó&Ë¿‘Z¾Áí_‚ÊÔ#|`L°Ð<“I+HE’z5B@sùã¨9&¨ÉÅE\RžjÐ9ä"ÅXÜ +Iý¹H+LÙgÌÂÆœK°”!qy=‘Å]©Ý$À°ðxš¢wæ]×äQýÒ–ÐËɼT@ŽÅãóPT3ÒÿÛÒ;­¡…™Áyî;üh‡û­‰Ux‚ -äÔCª¸í€‡÷‰NH›ÞS´ÀO¦´‰Î_ó ¤=ñRÅ…_¢I ¸Æ¿…²'=oۭᯋþº¸kSàX\‚°W»SÂȸÛÌ!gcÔ~^æ>Ø1x'§Ý¤S«Î Ûý¯ÍÑà˜ôÒæiJ›½Ú#¬XPb~®·%'PÕÖ_jzÄb®yÓºVÑ “i¥“>ú…ê*ZÌó"°c9C ±¦œ¯…µútî[@xØhZLœfëA€è±HÎEÔî òŒ=Åö·°òÑ,§fz™·'Ÿ +÷˜ˆ0`(Ø¢ y–ŠtÿA»Ø +a (.rApùó…7?ɳ}áÄž¡Ð2—*X +›aÓlë]¯T”>îŠ6\rÌ$8:è4E#$†óZû,ù´›—¶]Æ„‹2Q¾¹B>6¬É +-¹R8Ø@™gÀ1\ +$ƒtz†©BÒç™Z 9ð!²ñÇ°¤Ñ2¹1Ø&jÀ®ÐÅWç•ùŸ.ëZ?ã¼ 2g«Ëe¼úÑTužSúïaÔ¦’Vx.·¬]I›ËƺI– ˆQzK׆Äß#¸ñV–"Fïý<®ÒÌ k«T\¼_@q‡$£´‹˜º$ë>ä4#€£1æ¦Wn†“vf=©)»Y0 €’e¼U3’Í o&òض1ÊÁ¤í¡>b ú`§ ¼À5Û n¦ä{MnYi…¸ÚmÖ éÇoSG¯”ššfh´…½µ"…ò ŠúÿØ8àÇø»:GõT]ƒÃ0.[OU“}×€‘ P-öÇ„Ð- ƒEèႆc 8iÄ*PەΑ“"ï0žÀœŸ[@¶æ°ŠÄR€¸ÍZíîg-[+ó¼v2zá}äýA‡£%wÏä¹SG4”|â# „t,î KÊÍ{¿È¹—Ù*Î/vIš*Ï’«È‰ÜêûPÆE7Úí´aåŒ; Ô >%CàÄñ­ÉKÜÊD0ÒKt4‚§Ò=Ü[šçWBùŠmØÐݘ‹ßäJÜ6H\A’qX^»ðNá^ÊuêÈím-6P‘°¦øÔѨ,\¿ä?YIª¨É(|Û2{Âl@î«#bÍ®>èc²ŸóH6nØ\z—‹XûI4‡»54eZaÿ'%~áK f¶„§–¤‹Y· —PŽ+Tò(…Ø]ƒ˜~âŽû‘˜¢Rª>#~A7rÿWTd*'‘Ñ&Ô½0ÄÐþ÷ý)aÙTl ð½î`^(€Ú`ü,¹¤à§êÛWa¼mô¼QÒ¾§âØÁÉ—]V* üƒ…/ûmü8lš£±TB3ŧŠ)4eLV<>È0èÏÊ[¦áØ+F²º/éü•…¾Húdï³±d«û)4– +!ÚEE§º +?YjÔèöô}ÆÒò§µÆ_€ú`ߘ­ÎÆ ³g=Hÿ›Š>émÒÈö1ð¡ÿñD²Kp*‚aâEÔ7 eqŽØ€¿º0€íÂÑ…" ¹„»cÉæÎÓFù#ìˆ%H¡è be¤¾»ºHõ\¥»¬ò€‘3Ce‡˜ç_À™ÃøxpZÓ{, +dˆœèhy¬A¨ª +¶Öij?×äS ƒ²˜‚5bóyåÌâXF†4W*Q‚`èÍ8® +ª›È£¬¡É©¬Ýì®gï›%õ I‰KE}fœ8l†FÈ“€yÃÉ(³£þq¦ëJ rÛ£‘ÔÒü!²÷µ<éråP ¶½Oevõ-Kû+µ;õ °ûôI¡ `0J,û¯*Þ:/¡NÉ*:è0uï`>¯hM)Äg5þM:+¨s`JE&*«Ù"Q ÎÆy0Ì3Ƀ#®að:0BŃ êNe¸É'G#i Ùt¼VÊ'›…g:¿<\¢ïY‚«K倠óºµË9¶ +ŠšŽb\T¤‹à£gi›‚W±Ö@@£;d†,l¾´ÖEl,~â  K§b%‰*’¥ ~ ò­?î»Ö’cÀl2åŒD–§ýnï­ûâtV8 ¨Ö 㫺.Xµ"b¤ÿzD¸Á:TÜß}¬íR5^`àæˆ4w¡¤Æ´Ý|§$}i½>±~æSøáj“Þ‹W+ßÕ§€ÏØÈìß¡%áðB&…ê4} /’‹ð¤RPéͲÅLïËP×Ư‰RW±ñ9‚¹˜çÐÆJš- ÔŠŒ²W ·8ƒå=O,e7\-ÅâœCD4=J£ÿŒ6,8uˆÎH¯­>h“¡.+qñi<ïzNC%[m†Pï˜Èf›A[¦ò©ß<éÆØzØšZë’™¢^Þ /9cª§'¬8‘,ƒJ•sÑÒ2^‹ œÖ8¶?0ÊÿS††ß3ÉoF'¨mòªåÚ½–¥ìÈQW[” nl^€úÒ}o +7ÌD¯!ôÄÀ,Õ·s¡µEâeâ\i«›ç" Ø‹"Vc ‚BŠ%‚,¢-Å!}ŽLyw Á©_ Arû3 îO‹™Îî·çX¯Jl ‚Àµ5ô‚ôÿìgI:Óa€=?‹¨{ed†ô%ÝÌ +¡Ôå@eˆ¹õ4i£@ÚgÁe9)A¯šmÛ6è…ë`$/Ô/=më4ÜÒ˜0„%Bä¢|¢±>ŠÕÃu⣠–8éÈñÑl• F¦^À5Û'HöÇ +ž D<&Z^„˜Oô>Cÿ† ¼xÜÿ#ˆÀ©n +Æ°Ö9x7ØÔ0Gˆ•$Q'­(Z 6UÏUÎÞì]ÁBE,¤[Jä¯àøÒ{fËëfØŽ2R'.SÂ%HÀ!|E– ½¡‡¯8l€¡ADFJs¡lñ®V°o)‰ ‘êTJÃk³À«€€@Np­¯ð}êOÔ¾Ó¿-ÃNç²°°rêA‹µ ”gË‚EŽñк›f*©ø~»pÅÿ ZRBE\çÓ*Rvi>Sãèĺ÷‘•ÐkÖ‰Ö  å]Y× Ã.H1zJ¾(RT„OsÝ£K_´,§öȺս¯¸dÖæ`.LÛ.uÒR¹ ¿Sea 6¤9aÇÐ×Rÿh@¯¾^]¢™yãyâ +—BAÆSš¿'ø¾rIÓ˜O½_- 9ál(÷ñÆ·yηÍÐ[ÛÀ~y CW%´èÆ©†Æ;CNVrHVëÎêm¤.,ÔRmÔqDɯƒ %PÏ='AÜÓA$Ѭ/hkÕ«»÷îIÜv?¸£µ ´E„[ruSë“Æ(º”Õk&%Þ˜‰ü¤Œkþ²fX !'€nÿ=mÑAo~ï:1™ +ºI÷ZÀø{òñÖ¨è¸Sl „–,­.ØÔ›wh,†XcÞþŽ¾×ÝÐq°;³wKã\~‡ÁRk˜†¼)F· +%ôÒ©Êëïk= ~‘b2¤õzþCÊ|ºhýY—ò•8xh­:Ý„% yå÷Ü4V©Ÿ.{õuôÇ‚$ö#ˆ¦Óþ´ë²?¾ üÒY¯?ä7ëϾÖ.î×4yªÆ"W&ðtTn˜[û‡µŸ UÚÀ`T–pgDî”2Ååg’¾8,»xÞ  +°«¢°³]¦¸†Mt¯æ^m‹:îz»+DÚ‰Ÿê±èµ¦jЦ¢ ¦Ø"¿ž5M˜¡¶…ö´•(ñöã¶MÛ¾is%]sÝýï‹ocÔÍKå²k˜Ü"ŽêÅû». †òT—[h÷»…¡”¯ÁûS%¼ŠçAÎ/Ið>ël¡øÄöÐL4ˆI˜lÙw~…È$eñ=wc„Ž61r‹‰h~ñ”˜ibóð‚*¿¹3“þ(>úsô«%#ŠK¹=²¸Ø|7 3mG•‡zRõ>æÓÍþ؈G¦œ1“ ía6ªßÌ¿k̘«Ì#fž™a‘m6Mͦ‚da;FÇ5†Ç"v|Ε–•Ô½I“d/“líQÃpb2…͹Ub2dÖ²ªRﺪðÄe¢Ò‘PÎäžó^É‹Ù¶ŽÄÙD÷óLOF©—0Mýä‹+:{ä(ŒÎÇ8Ÿ7OMÄWF1¦#¹óƒè3iIð|:‹ì,–;ÛDißÎGv¦|þå™–Ò¢²˜Y”BçՉܼtHÉÌçcö"bµyzH"q:Jžœb{„A5Q&Xq´áš¿–H¼99ÎÔX¼bw9Äuè:gCS¹zHC3®$§ˆEq¦ŠŒ’õ iCG1‹Æ3z8"yqlÎZÒC'w”®+ áMy5ŠJd=aÄ9#™‚× Î#chÜqœÈ¡¡*’+‹Ã$Wa +²„ar‘2Gš+Lp‰J¾_ ‹Æ¯˜áQ ‘bX 1†Fù™!dÕyîdA¹y«!X$¢‡4a}kØ+[bKTË=©ÖÉÓÞÓ+k¢‘#QÊb›¢ºr4:iíÌNAS#Ç MâXñó“`Yå3wË°R%˯„%/EÂ.虶¨f©fAÎIŠr‘¡(1/Õ2.æGj¾³Œ8,¿ÏÈZŸ¸Ñª±A2ßJAÍÆ%Q:D3H¿N9iâË×nÄzHäé‚H ´ šs®Úà°æ­Tšuçˆ>V4¡›ËI.4õÜhSt¥š¹é”S¤‘óOñ¤S爃ô¤NÇ•{¢y8Éx5¯dQÑëvìY°èd1¨¤Ñ¾¦ Ò_—–4Èjºý«éDŸ;“ *‘©rñéH桘"©%I.2iˆ#Çžbö¯š`¥w|´¬|üÑ«C»s8»³VäÝVFJÌî›6yc)_¼ ±3ë4Ä^…‡é² C‘míìJ^BR±qB.îa(š»¶«Zȉv_¶B&ÅtNL›\ÔyåàÍÙ|Ú+¹º¸7éì%9³—¼G©8º<—Qâغk\q&S«KJ/òtcfÄs/ÞnbQ–ÞIªW«ZK«he¥¢|Â{I ©20ˉ”ÆuTæ«{±^‘ óL­æÎIÎaV5u1ìéS¥š‘™9rÝ4!`&úUgäl#ÏA®ˆl¾ )cbbÆ#§˜ry±‡í%õ2ï}ùuºàõqÏ|¤²¨‘ÌÁ\³™‘ó¹‡e¤°ñWd‘MØì–„ìWñzØf‰Ù‡Ç"¶xÕ£<Õ(˽¦”¯-לÆE#ͯfb¼³µ#43Š·6Ô]TÛŽ@&5æ +™‹Ú£ «¥S£}® Öbš`ù0SÍq]aŽÆ`ßåÀ+§Žª'(s"§ êßó7%–ªª›Ö{?íe'¢¨{V'žB7÷,»ÊOtmzŒ“ÿOSz>DÒÍžˆiLÞÃ-Ó ›ZÿÍ•Fc‹õn0G(~+jŸÂäíj8ì:3ƒ±J$XwД-í…¸ì¦Wǯ*y…øQ•¢¸¾ì^.…Ö»©_K\r1ÝOÎõ[Æ=9ïû5w³ësrœ"–óq¦ŸÑM´D¬µ‚e8^[­³^ç;dl°¬´û£½ÊG÷Ô‡‚ê…Ï„¦BÚÀâ^%†æBs;6­ÜÈQ>lM«P ë6WÍEšëÒ]Mô”ác*A j%ÊpB—ßsLµAS†ÒŸ`K4BÖ¹³Š}ñ´ÇXTeZÃå9R¼–z‘¢ŠuŠ^ŸÏ_÷ÙÌŒïÚKyì™-d£Ó;BºMYVMÙˆ&’‘[Ñä>ô˜iÃüWeH¦Êæ¶ÇCG«)6I‘ܼPÝšÒOMÄp¬ó Ï!b#-ÙŒ¹:Óbz²OÍT&¨,ùUPs jCÊʈfáYˆÊ\ûùÒ¬¦¨(\^ëdc³1ø¤F¹þÂex}5ñ¶ìcyg¼3:ZsIEÛ›[7œ9rooîýÜ‹·'绳Gõ4R¤ß=êêf§¹?ÞŠ'ªuSVŒ2^ÕEL®aµ³ç¯†{m\²O®(ÆG3I†8ÄŽë-e›ú7<ÛYâ°Ò<Ä7ÞíÊfÅD™ŒñËä[-¶²mÆô²¡í²•]>¹2“•É,¿;Ûù<2c'=“rñ’)2™MR3‹þküòíA¶³|òÌ)¾…ÜžaYÙã˜ÇÐÔéÝïûX‚çç.Ë’ +z½„l©OGu£½ioê£.kh°ðZ¯ì ¶~Š%¹„oäºÖQlE£­XÍçäuÅÍGâ)i]½ì6EYÑʺWŽÚò½«Ó¥%4³\GL²£¸º:EªJhry:3Ê´q I™êŒ±ÖØ„ÙäØp ±³¬V¤„$î°ÓŒh$¬lÅ*{ñ!Í„Ø×±-Ž4zˆÕlg ²ëIÕ#3ŸY†Æ×±5ÌT ÑÅeÔäcUA«ÝÙšYe®¢Dʪ:'Ž¶lcª8Í6×Ùªg®ïÄß‹´Þ´‰E¢f£h¹åàô‚ÖpÚkþÕ‘•Kò§Üb¬F¾:­ò»Ämæ’˜Û!F4yR6E!Ö`[-= šÕrÓŸ[ì™ Íꛫ0{zR˜ÙWŽÐÂ̱ä:w›K:}ýª›Ov ãœÙvÙâ:±ÅT5 ûµÔ‘¾ŽÄŒËÅ¡›nß«hÚš˜ÅŒmÿLC̦—-ÎÊ—+—ÿ&zúƒGDÇ×Ä\Ï-ý 3#k;ßÅuJâ(¥[}ž*qb"f åâ…óžaˆñEsy”RŸö׫Zÿ+|tÉ/þºé*VLÈd剱bŒ18Æ:¿±"¢¨"!òDºÆÕ•Ð㪡^¬¿†õ{:QUS[Z,†£(×ýQUöµbXQêŠîì/ÛX»ZUåNR%Kj‡ýJŸéHS®amø+48#'¹<»Ë®£¨74Üu·jGwõœBèN±Ç]7ŒPÝ›ØÅx7r×ÈåWSõCÊ_\9ƒ¦>dÛEÖò†2¹ú¬<bVÝîs\„keFþVìö1‚+ ü™ãn›±Jïc­FGóühìmoQÙó©½œÇ ÃülÌý´Îœ¦hú:¹¢ éŒÌÈЈ§ cÖÙLµ±ìÊ ’‘e¦YV³ƒ6þ£5†ûᔬâëÊÆì¢ì22‡™Î¹Ë 4+cg¬Œ,v^l"Q¼7Ò>´‘Lº"ãFasM˜jCQcˈˆŒ6Q«"›Ö~ +’ÐL(BoÐH\AVu5ve1­çȦd'ÅÕ/¬dæÇ(±Š'\%66g"”*5,GÖØX#Ssò6²!“¡b¨N;c7RNìɈ.!e®TÅÝÄ*;GL<ºÌã´¤Á*ÇagÜjŒÐÄhHj®<ŸÊ ]hlIÍõGþ‡nG’U‘‡‚§©^$­ÇZG{gäy{D'áØ…nõ¶Êó25&FW²VGF¡ÕG$v„Vrá|~«MƽgS65 *êQPMÙȉ}#kdE¿¢E¯y² +–KˆFD®_‚U’úGä,©`Ío3ûm²¼x›p¹6§¢%/³ÂÕéÝ„+tl‘¸õb¸‹VOŽIT%ÑbÞÇh¤6u¬-Ö%^%ëhf>Ž«Š]Ã\Z¯Çiäùœgˆ*Z÷BUFMFý‰6”Bm+hc•ib_¢Ð±25Ófo¼)‘B6R'e-ÈH"q3-$ÒË#Dq¦Mœyꔧ4Ó·”åù„ªÎ·þ'ç=±}wh:æDóš²ÓMîC:ùèšèݕȳ+ÅÀ_ðhÁž §ÇIðÊ +öˆÎÜEÕÑÃìJf;Œ„aDÖ0#Þjfc¼T˜ñÈauG®–•KÙ®¯º™Å™ÝÎM¤<™ÚœU±F+‡Íh'‰Öº'hdÿíVI½sd— ›“‘øhäVëmå‡áXC+"1&fV"èÚ_ÅØ-Äz¶OZ¢«†˜É>rJÅlò0©¡¸j¨S9$¯‹º‹£#aØ?ñûHuÈLP° ˆ8¸,úãd%w|‰(äß]©ÕlΩ(Î\ÙÊüÉ‹fçhÝ®Zœ‰Ù‰™”Í NFÍDÏ×0ÚªJÚ1ØÔãp“;Q#®’Ûgîæu抹«¾ +›ha¨iÕèöé²°_ˆwa¸Ó…ˆžýrJøtW£Ÿ#Kt\=ÊY«ÕÎÁNCcsVAä2íp„†Œ!—º–H´§,Y*±ƒ3œ*–ž"™5$3žƒ‰Q•_{¹U±t5¼:ÍùFŠ o5A«nîc žƒ½‰n 5H1öÃqïl©h–Šëï2C"?$‘#7»f8æ{ÅÐ1<“ Dö• +^ ™c%]•cÓÎb©õœ9«r„tr½È þD•“°ŠFŸ’¾Äª8•„hcR¼8‹Õˆmè_^,ß•ÑZ´uRAm°SrdC–ÙÌ]‹6ç2!Ò‘ÉX2©ïrFåsˆDx”ãé¦4Úáš:¬šÄé‰éØ`©jªÎ`# =hŠDÓAÓ¢ +âØBA-½LÓ Šøž´¡u±zÛL׶¾^ïPýxÈó&!9ŸB«Öí ŒÜ°.ˆ*865DÉ$)±»˜T©c:ŠÝŒIÜÕÌ0";™°æ6ó΄ï›×•˜ÌˬtÏŧ̡ËÄZXErn¢ŸnÆHÅÐR{ƒ¹8jð-TV”BÓeŽËÛÞòlì<¦YMƒ¹Â†—'¯HãÞ½ôžU„ZƲ›î©ñ„êD·Žê7/NwWæ™éØÕ~oW4›GV¦ÍCòkhÃz‘-¨A¤/ "›lšÞ…wvó)Ne«’*‘<5²©œYgZgC/‘o%e®Å­òÉû0q{gŸ1_–•ŒøD4w_Ê7c¬§¨¤“*eA. ((@ ˆ„bá°€R·aj4¦R>™hzt† "#  €—lï‹Œjz‚M~&7yEìKÌO£wœ Þ¹‰l ÏX&½"‚MOÉÐëz3SÁR/ˆkôDiwRœúý“ªñ´ÝŸüŽ®É¶kª)héý¦¨Ø!´éÞ‡é½IÑS2?FÜ‘+0nº}¹9k,¥H­.w­¼Á0¾Q¶ÇåÊ*T:ön½È÷þŠ¡÷zíw›¼u³-dßw#¬þ>ë…óp®B†ƒä߸5À-ŽÇÔÇ& îÕ+Œ„z5$,µpÓz춳™ŒÕ^¸“ØÕtÈae›0¹È«þ¿À,¨×XxîÁ¿}ðk4ÛÌ2ûq8:íÞK©L›Æ¹ü’aµüÁÞ +AUÍmV~b)ÝHXÏÞJLéeë«z³|Ÿ’G;½gû¯—¢0°7ˆz¬ol²š¾AF/úlºiäh¥´è;/'Ò›¤ã|Ãðs•`hjÏ™—š±6üÆB +?"3IŸE-ŠXD/‹{aÂYôÌìûX6ñ: Ää[fò²El«U.~“Šq^PJì±"«µ×öQHB›Q™z·)¸¯oûDtpmj\ªnùÃ+˜eŠÔ1è˜Æa8bWÊÎ'h(¥1:ÆŸ0r×€庾*´Éûtڼؗô2ýhý#™ÌknD«¿ŠÉ#E«_ˆJWEÐ:L¯J 1nY}ƒ ~ð…=vž÷‚> Ù»¿ÂOáü†“ËvŒŠ€iª·ˆ+H"êe¼ÃeØ“½fz+]ˆ¨Qúz«:ÙuÃ.õ‡u󽇸Q…Þ8…þCÜd%j@åñh csÿìã8ĸ7îDÈËZf%¨¶QŸI]̇k!jžp—tÀ/PØØöâ£Pö€Ocy–ÿ›ÆW?Ý­CXåöb…˜h`Z}ƒ?ÐݵH¹»¾*ƒ¬1657X´Ú>ÍPýõW9„øâ²Ñ.62ãxçLëüè G# *°î#–§Ú:ÜÛÿ%¸Cò“¹Èq4"@ï_¯ŸŸÍ¹^s} +,gÏsßï©· u? `fëÐ<:å6âß\J+¬Ò c@Ó +‚ƒPÈ¿Ö‘˜1U•Õ¦[üaÏ5/‚þxh–QœÝÈD-‡rõ%B˜?ø†Ñùiº6G!8ð»<~˜¢£èeªh‹Šgéùµçó1ô~ +í[é™p¨Xäe‘öïƒÿ3¸ˆB6ŽWyð‚BTk–£±GêôçÐÿqŬL2ä[ €eÁ›— p>‘tÌÌJȽù¾—Š¨O”‹TvPTœS(EA L}t¼ðlÞ,¢nZ.2àœÎ“F#J„õ—”þÕ‹­ë}ùptajŸ¢­r„Õ}îöNª)rŠDf˜lñ§D„ Ó-×æ ì¯öBTq £”`Y:ßKð‚1­˜zuœöÕD=5¶hìb^Á‡ü§xs>‰„[5í—?í˜ì#7¤‰zñ¤FÞ_D¾Å%ž™±óë…xñìs>·prY­,ÜÄàFĪ=³ ¢IߎÉujtÒEÆ ùòPƒ²ãÌ<Õ…ýå0¹däG«ªµ¶©ÀG9uÁš3Ȇ:þSW¢²š›9Û¦ÌÌÑÿ§ü¿hiE¶µìÒ@V¡S°¯9© nŸ›_Çù¾È90IeWÖý;#’Žº»,¬c÷Ð4ÜcˆÜ|xŒmôŸùÏÊCn:¹Ã9iLê4ZÍïËâ +i»™Ñww~3”rºaÅÃÑÊÃÁy÷6~(lŽÉ ‡•hkiÎeÓ]€zô9öå¸X €/œÃ2+Q\ +  Å(Š¯ùÊD2$Âclj͸”ãÒUgBãâf€¢šy¿n ´ÜZ'•´ec~<+‹~ PÝsM—{:qªÐµаW×Y5EÔÑŠP¿¥âĆ_ÙÐ×BÚâèMÉ@ì9”°Tg«¹…æÍÓ¯"P…í7 ÜƦU½”Z–d·µÆ†&'û ÛÅi¡ú“ÎÌÊ¿EœQ3’ýJZèø­Ji#Æb¼×eˆ¡¸Þx&²Vì"9´>y΄ »át€¥ù€ëó|p‰¾Bä/¯‰R¿lê[Atètܾz]Œ)<*t0–`#M(C·FÅÞ+™ÐNCIqÄè- Ï+¤!fe³l—é¥ábN¦È ­QÏú¥¿Þô¸9Åj|8L®%I­Ùt„uolàÏ;ØIžfß%^õ¹u)ÏQ8´P°r£MH€uw3ÿIMn› çý,hÖìc=ê$4øÆd•Â–)-P8oÃØ ðÝ„èÞêš„öý›x56ÛDq‘<å)ùš^eš¨ÒSñ^ãQ{x¯¥¼ ñ°ü>Æëãî:ÍBjÓÚ(š@ÅJ\.‚ì4Á:jºê,²—-q4 ‹ÊÅݽò…w—‘ã=ŸkÑé÷NÅóe¿N•ø|‡$_hŒ¶sy¢i‹χU/«þÛÐÿƒÇ[£Êjy‰ ¹6 +•‘Z™…LœÅ#%ärlA6cøÔbð»Ý(Çòçdo#uÃW¤íNç”æžÅ¼&%¹rJüë¾ +º›Â{Ç]@o…«È/‰"ØUÔ º_Ä¥Š–¥¢%!Yöñm„&^‡ ÛGcV‚Ð!’‹'¸ ^Bƒj휓Ñ]Ü-ž‚ì3/žZ_4{ ê(ŽZ?8&á´ùýØV/qj&m«‡VêÀ•Åúµþ-mãYXÀ†]l>h Ø4*è!.ëÀ¼XNÊøÉ ëœwö«³ùÖ•·Bë¤ ëÕïÒºð¸N«™D×NÝ%Ò„pÒ<©æw—šӀ‰ª*d^"z­Á˜LÈ%î5ä<ï°¼ž_ס£óŽü¥¼”·#µ†vbaó0ðXÚRhïðÆÒ™òGmÌŒ§B½j·°\ LCû£§l/ž_ó¥>e£ƒüW"îÙIôÄ«Fd2Î2H!¾7±ªx¤þÈn14§Ý³»²lÁS?Û-ëpóHI‰jiˆÿUEó0 ¤8kƒ…@ÉÈÉ-GÄ/fF.ó2òe£Ã¶VóWVoŒ·>œjŽ–±Œþ—_å”jê_4ü›nAKÄÈ-vE¼ ²¦“àÔT£7G´#ÍÁò[FÔQ²CT­b}”T×UHòå‚Œ•îÑ“}@ˆ.ˆèA‡g¯~+è%A»*§4g¡åKÐF»©0~ƒPƇ„é   ‚ß„Î =̪†©¶òÿ4Ft¬ŸJpñËý¢Ä„{Ò™o|›Ž¯JøDYÍ òúàÃÄàÙ ¼ËGuDyw‹Zý0Žó²Ã²Ó¿Âî?5ç›Á>k½âöÀw6AQ]ÌÛ>^²Ž®Ü·z &Lcù¢]dÌ’Ñv“¸w BàfCË_TÇG Îu,ƒ’ð‘ý Á§l,“à?®8é[ 7û‚ XŠ|Öõê»ßHPå!ìõIý§K£D[;®6®¾îY‚»l?ä I¾à¬‹«TÓ†âRQ.Ÿ•q%²{û™Ùr›ìØ N‹ +Ž®=^í؉½ºhˆE‰Z~äŽ0»½“[ ‡Ý@V³¬ÔÄ”­ ís_þR‘uW†¨vvzùmwSÔ=}3;LBHRÏë™òFIg QÉ¢£Hó*§T+3† y¬A±zµÛÜyF!-šÎ<ÍŒ*׋šnY‡W1VZö…©Ð*S*ùQÓ6ž‚B[_“­:¼¼_½x€x·Yj?ÓÁ霃}fH»MÙ`_*“ÑL—œŠ=hrú]Ÿ±ˆ-YºnÚ°0R°¶tú +‹X1€-¤/z‚C©u—: +EâG÷ŒnÄÀ0†BfS”º$†Ù‡9À_)Ô£ Åm½v×Ðý½Þ÷ɧ°3hš†ªj'*x²Î3&Ÿ$tCv:oÖ³„ "]šŒ2W0dWÖ['3ð}׳ãüìG«æC~q¸ÍÁ`}ÀŠÂcÝ«ã©–郰ù§_n¼,âÑʳ¤ƒ§¬óèñ‰è•RéjÒqŸ˜;,µ*i6&ó÷ÖTcó†8”°4oØâåAýn‹jSt) +Odq³uôÿ” +o„B£ÅtCߟ2F„ºvéÙo©RúYÛ ;vA¢óüêøI?Œ‹CáœÚ«Û¶ÉÎk†í:-sH´ór°A‡ZiÐþi‹zý÷Hé¼£˜yìU‹ ¡•nôy2F0ëpã2v"öljÇâT +mf‘ÆQr ”×ê‡zpà FA,¶:S´+o%´Ì‚S(—Š{ð9֎eàÈåŽõ°Ò0]6¬)U, +hR¢—xfòúaΖ3õÅÈÛ•þ–R-àNNtH 'L²¹Gs‹htmµ;±@HÇzH0†þXüºöbü8¼` +r‘›ÆÒ¢_¾T][ÁñOÉ@¾4Õ—ˆ)Ú…ïOL€r˜ïS*7‘æl<M”Oû%ÿjnA’ ßw=dn5Ë9ëûÅÙ9i–¡JP.Ø.,b]¼Ü[šZ¶}¾ú.Gêɯ ™‡á´Í—ú¼¡Õk‘=cŒÛâ¾ÐòÑ{eè»"4ò(™“[’¹á%Å4„N‡ ý¼ë¾¼LŠdâ¼qW5q3N‡€þ«„xº« ˆžÆ½ã0õ]uQ@+ž— `û#öÙäÖ¸¡ò«}¥~;@ƒˆú*13Ÿ —µqÓ DØ f¹¯â°ú ÙI¾J|§æ¡ƒöH4_þkº¡´+V ËXI‡E@®‚…‹’ú ªÒ¥ôéõ!¸O¨••¸dBg©ûG +ÃRnC†¹’ˆl;¼¡Q 4S-‚¹,ÜgR·‹š_¿éê™ðIL,â^x Brp>Õ{<é}6„®¾+–VúÇ-ŒÆ¡ÐØ6,d[¯Ú§fÜž”Éî)’¬Sœi}¢ž-Vá¦C:U 8ð\÷ˆ7ëZ;ÅR™³2‰NÈpïJ­é!ˆ +0=>Ó.G‡·®¾z„™ë7*;öV`æüÓh‚ íõ³8?Ž=}¢Œ iíGå3Áûä¿ùJ yI$ÊË1^,v›G¼X~‹%“Ååwêª'·µ4NÙШkêuùÐ+ÂÉ^³2à êþIZŒ²!¨Æ#$2šÐ¯Û bíç·²/85€ÐØ}Û€o¿º‡qÌxV=Ù<ÙÍi ‡J&ôÉðCÞ§xèäuu¹]ìPM†Ï•×ò!ˆVÜ™ž´«„”ábÎ\ÃSé„JwH &á¡'DCùVLYïLßLJäÜÀ_MZ~" kA^¢ Z«Â0Q墹ÂÍ??‡"!ýìÐÌ{<5QM¿*'èð¼Qús‘·ÎjÆFm ”ù}^`IÚ¶êI³7Àówd‚ÎØ! ³Ÿ}KBY4†w~h(‰ì¹žc¬Îê¯q0VØØV39ºNNŒ„f®²Q½þyG’ˆP$zTUcýÞ™]3cÖÏ=¤òT˜i¸’áô ëfWGîé—JS™0̓îÙŒ·gŸŒ¨Ô€§8µe0&Ú”3'Iâ ðI7ñ—fÍ°]ƒœ¶ŠVXòá –B‘0%xdy¾¡èt÷ozWåÉàG^î`y½b¤å¦yðZQðˆlÔcÇ((ƒ2ûOKTõý…kÏ䃟’ÍçÊ•v±Ûf~Ô è0XO4§8hî˜5JÆë +µãMßÄ­}|³¾Ñ5œÇ',C$ÀZ2¶e9Å•ñUÄQsŒc¡ê…;ºK…"¸z]8˜”$>D÷ì·s†²®8Àk„&”¯©töòXîžaµ |lÄ(_Ä%|!niÞh§sø}L +÷ïÚèšPצæ@hÌfõ¥×V†«[×ì”òµšïȺ¢±˜¹còÎ_ ”VÃ8¯üÛ:‘'ýæ&R`…0c>K\IЋ,”‹ò¶áú2Hü™vB!þTYZ‰˜cTÛJÅ))— h•û4 «ÙAÇ»búC%ý)´U ]×ÃË⼜|Td‚Òo†i–Uõá—CE­°‚•õj`þ/Ó B« ›NŸ‘KgDÀ½TZšÝå ŒáÌ– ŠÉÍòi–‹ÆUš²!·²fIà•¼uø¥!:ÄÑy®Úqü¯™5Sþj@ ¬Dép°æòÈd8?æÍpœ0-íñP›‚ƒ£º$áÔÐgÙc«r‘P‘øX»ôw×-‘}Â2¥[²Z©Ìªü»AIßí¨Ó¹¥‰Š®Ë4YJïI„e¯«óK¶ÕªØÉ2”¬þ‰rð.L_Í$°ˆ7÷[˜kû?ÝVëí»YS/þ‚£i%ž¿[øgS’Ëìò^‹ù—äÏ£ÄQ´• +FP%ú)Êýº} ÖÄ°!V +ùq7ô`žñ«lá«Ë’ß÷Fø-J`[HåÉWœ35K*Æ9_H—Ä~Àb̉2cê°&!þW÷$¬œ5’éÊLí\Ýóé©Ðm6=6H‘±8‚*Ëî-G{ÅeÒшUŸ}©—€FTZ들!¿ ¤lpýæ`ïÓx”hG ù1Ù*F«n¹Ç¥r¶¶L(~½×3*¾‰.±Zzî&`aYeðëÉ F o)ŒÃ8§œ#Ú„ùø°LŸWsŽÓ‡EVÃÿnú"[ ׆Ž­¡5ɧ3sy¦é˜h2žŸbíVPÀ€0rÙŠÝÒ–Æ™WòÓpw¡ŸŸâqÝÂL]XF2A±ßru‘«bU‚¨IÿÖmÁÞk—(Š×rÆá[û«.g&¦Ïç¼õ]©#¼y™®û5©¸þÆ7C'08š&×N*˜UìTM€¡)P¯/»(ê°OÚö¸D"³cpZ9¹ØZgò ±Ÿ9QµXÀØcF/n%r³ì ¡6(™³ëŸ7s.*4vÛæUß R è¤Ÿñ8…†SèŠxø ñ,)c´‡ÐÖçV³H]¹ã?{7^FþFÿETÖøµ®LL>þüt![jè¯* n–$Æ¡Ó²1.Mt‡_?é¿IAøgƒXÍ'Vx\I¦J6½›¼†dç.‘P«>öÚ“ÂèH¾Œr8>ÿ¿£áò¬|hìzúð†åwÒDA²}çëŽèz »w"Üô¥®q“ájܨ™Ìîx¼“ñz„Í'ÄÍNîž.Âq5H¨œ z4Ó’ÂÜΗ©ç„U1ó üÂ{Ú uÅ|ü[ +9ót4ŸíßïØÈ»dŽ¨Ï j ä)µ×é·#œ}>ÑôÞëúvý<2÷FЗÂB,Éf·û+ï–K.ýØlH>Šÿ ÀešH‘HÑÃE…ËÎ9m¾j`€EYú2ãÄÄî¨$žYKµþ>º@™Ê?—:KX)¯®9鎔§y¡pO¡€OmxD¼yVÞè¸þÜÔÿÁaÁ×2ƒ‡);x I8ÊKÙÓ\7•… ž™WºUî %$<±e«+Óë­gæY™¤«dKü¢r?ps‰ f×vÅ!&Š¢¿ýÁ‚åj†Ÿ^nT‹ö?¢¨ƒ»aˆ[=òï‘84ïWû‹[˸ý€j|/x[Ø©‡8Í…+œb› ¥™‰„AiÊsHêLÑ‘¹l@Àú(‰b]s…Vê1ÔÃ9bÖQz–H4¼ÕTâ€ùb |¸lþ¡0ÃÞ$LSôã;À(…Òã°ê»HWĪ#ÊÑY-!‰[i&Cµ…¨ÉY­¤»£3Ü'ÔáÀQ€»=´ÀšØâãæÜš¤²m±Ó.K4›D ­¾?رN’ª†QÑói˜Á´1üØdO‹(÷¡^éäI€¼A”ÓùÅäûWœ¾Ú-«°¥;¹H†ÅÑ—Štù´Ÿ3û )èàP™ÓšUGS=†Ú7\à#9àÃÊ6‰ÛWNC¬èœ¥ø»Œ;Õ!£®¸ qŽßز‡Ò—5°ÌÂe:¹VŠud3ÇiG»(;ÒXæ˜ÏåDnÎíÁ0BV¡×oO6¦Ý¢ø/—iß.‘`VŒDUødO=‹h4±ëíŠí„ñ‰Ê«>ܲqG/ŽV·|üñe,_&3ÌsL¤q„†„ð'F²õídQõÚi€Hh?klΓÜQDøÌé¿G(>³.|õ½H-ЮÅ3§0s:‹óÁN’CR¶ñ09Ï¡gð ¿´5­N˜«L:½Ág7œ×8+$q`ª¢.ûÕs%¿¸«ÎŽC¾oÃTnó4 +€Ýå+ÐâYZÑi:5¬jÄkƒjÕ!‘&~ÈÙfùOÅ7Ù!¯}:…±xˆj +CŒÛ/â<Ο‘üe3Ðfž¸kÞ+–+SÎÐlý±{»æ‘3ø ¶Jü®rÀœ•&%NÀ¨ûeë›A9?VBiØ)Vq¹hnÐÆ)2hðÇXßÿ~ÆÌ«IÖ)Ci Ú:& +U0Ém&üšF +¢Éú€jsñ x>Œpó)ÐZ´õv]_^î5´™ðQ:8©ë+­ƒ„÷ìW M楃BFZгU$Òr"Šý>VbJ´[ƒCæ3B»›e“ØR[a¤D')÷1H(ôˆ²nÖ±®oXe ÆT6Ø!×áF6úÒßIn³AAÙ£5MŠÝ«Ò0‡¶¦£¤ˆ¸ŸÞ…y$Æ/D2ҎИ¦z’y—ÒV؃¾ 7Õ|XÈØ~ŠIyßâUÞ¡þyNtC¿T_œ~̪Ú׶ƃÌMè¤i„¸õr¤=wo;ß ”ªiÙ(‰¡s²I}ØÂʵJ8¶âì+þ–ìÛíû$º“(î¤J Ñ@ªþBeÈj‹Œ'fô„TÖZî8Å;g³E˜r>Ðð­K%èæ¿ÓÀôŽ|és©02Šnß3j€Ó\OÆ´~vৢø“ž?“²°-õ M‡âïh3‹ÕH.))ɲœUÒ«&øW[ CÃyhUÿ®ýšñyjÑ +°›ðÀh…Y0eþYU³mÈ—é _*Ü•ðÏïÈ×h:ìÝšª±1CKh01t”½˜D ¶îø«Ê€`<΄xh8¢T¿¦.E=~7Zø`¨çAnáÛ%„ë”ÛŒÌ.ø‰S }Ò#c MM¯¥°§k…üžïpzríp<©7 +Ã<,*³ÇDGê BÒ\DèÒ½œM6µmBa¤ÉÚìò.æ¸m9äH•,R¿îz°¿‘¡²äè/‘Ï}Ý€¶¸$“…T 6 /¬˜­ìŠh™`³M •’F©VÒúüæ87 êÓÎÁ?REþßÐüÂVb/ÓϺ‚q…INúŽ¼Œ©sâ4~§+IƒÌJ… 4†€g´¼¿9;¦ŸU6Ãxi8ØâÍYxOyyümo©Á‰>ôŽ<‡ùÀìÚù€¯ü›ÌšÞçMó=[ß,ß´ëÙ—šßÙKÜõdFôÏl +,4dþš ðô4CÁû{š£žûªúN]¨ÆÂý½×¡uâ·û$>9ëä0wïWâÑÉ”Í놩f±ûH=)èÈ  ˆF¾ÃÆSìc[,=‚êÖŒFvÂfšÃ"’Jn ->`¥v‰å­ëj%ýƒ» Xv¥¹ðGðµÞÊ‹Ø«îñ‹›°G(c¥ieüjv©œ~fÜ“6@«rñ¿ ÅžPÎ#xWæ&l&aÝÒOn㑸¶Ãü‡Â^FÝO‡Æâg³D;X\ fÕZ|vK >|:áÛD¹Ç 6vØÉÿǹ493êºÄáëÏCüȈž#_„ºF6ô Ëî +>!ÿÔ9Ôê¹ +ŒGHÒ-ߘø™ÄÆj—&ìÞŒ@ùÛ²ý¡y®u¨ ŽÐÛêžm šÖ+­oyüÙ·Õ…ã›ÉÄ…ÕÓ²GrZÿÍ2+cjÍ ·È,G%ñe¤’&R­Œ+?õ7q7‚d­ìà$q^ª•¾cÑj” L"x½¼—ríP÷ú™²ö¹¤F5y]8‰ã Ç þc@·ž,W˜ÉicSÔÀà-–êF[?ÏrĬë ³:BdhÊû—îS(\ì“%Æôº¾Ð»ýÝ–ÿIS¯Š¥,¥eñL^dBˆ®Jˆ¼²-j ODß<)")†´¸Y_1@_žnrz©àPÖ²ÐvWHH¾î„²¯RöÎù”åîöÛ­íêf|¥Ë©Ê®ÐÃä¿R™-98æÄHål¾%Ÿ‰yååT¿2@{Z¡®ó Y¸¬`ùbùþT5yíŽ:OE £â·|ÆBJ*5’ãF w¦Í™¯~óe&fòž “6”NLhÍÞhìš™D<ëIµÖG½I;Øsû`U>wÏ!N1°ˆ êL‚9÷šˆŠIö„^ýDÒ½P´WN½"I·w)ç|0ÒoB#¹ÎÙ¥kg§Ç{ ,–­@R‹iØ%XÌX–¨8æL7`È×؉Zuž+qHŠÝJé®BA ´’c$ÖÁ=Äô¿Üº­*Uƒ}‘ŸYš^žA-¤¥ú@wìÐ,ŽærbO°‹$’ñ–j¸ÃÜâ]-í²mÇŠSñÍw‹'çeY$'Š`Kcæ(â\]Oð`PöboØìRýl“O©1Û R+ +ÖѺÝÚàÔñ`ça涫\h|Û­{ÎÊ|!9Ú T*aˆ"j +(k„EqíL£ µB +‡d\7Ü@çuhJáxk«›’ &¬t²Pù€©Ñž3q°~)ÌKRÛ˜LEŸAËóû.!WÛâFû ]ßXºÆaãˆhv wAû7,ª¬`¹6lö6¶gÙDž¬"vP9€Q,h‚‡™šŽÿz+ì ·{D{ÅŒ NÁ¹‘D:öK±@ÖÉ£™*+qã®8”àh§÷©¡‘q½dìÛQa¶á7‡v÷dn2wdT2ãÄ*¼@wŽ‘ϪBÐj¢SÓ!áØå©;†æãžgr°Àp&c:Ò¶€q'š ¥ÒÑ ²ocKÛ¤0¿Îä¼ù–¢i,‘©vˆqþ ÄFÁ„ÅU¯}ÐfÀiŒó7XIÊÆš0+ª­åaÿr£»Ä©Wˆ oX¾Ê‚¡3ö£}|3òåÚÚï¾ 1Ú:üº(u¤ÅXm®ìŠ[ó¯c˜p€rš“ëYSƒ} W•ÀÛ&xRV“üìi&#öOSÓ%R ÒÕkïÜŒÿ®ÿJéxä—„Šª`Ø¿ÿ©éÙ-°Qˆ*é˜î|©íU0òµŽ›ãRˆ)ÇÀ H#GÞkßI·pÀo&í{רÍø}RàP\Îe‰[Œ´I™öœ¨Ãü)< †Ùt½a¼+i¢:`ˆv£‚SÝPžn¢²N'­ÇØZxÂ[3ÐÁ#¢®—7Ľ¡#ïéŒNËJ1žª9r:ÊP¿ñ”‚œk"·=gšu–¢žïVY;NkSy&G¡k¨C‡C8ÍF¡×ï©e66d{r’qJöAUȈZΈŽi>=MOè-¡ˆ=±®ÓD +æÀÙƒ§‰&‡]>ÇrA¥T@ý_–lçqbàqþÖ˜ÂNu¡p‰—3èÍè­,cŒ-¸9œ„§v.k«£–n5‹þuT¼ô~ÿðÄ“á™rä­h¸Ýa¥½qµé7M¨iÛ‰× ûuÄöü›â<ŒøÁŸ¿è.é¢ØÀ£5¾(×ûrM>·§pÅ òyu~3ö!o.9Øeç7kxHÎê' ¾«5¶ C&N“›8H¯%ê$€q`M+ìry \¨­¦<Í_—ª°l€i†Zî Úµ†ŠÆ6mÚ8l–H™ÐD¥•Ó42ø¬+Biß䞺F å>Qù‚å™Iìü‚ÄñŒ{cb;¬O}- ’¥8ËžÏY|ˆo"íOì‡'eC—MÜ(ÅÁQ¹ ¾1FƒóÙt%MÞiƒ'àÎàc˜]QÁÉqu)˜Íøs? é€w£ Cê—;«ðDy+¦Ñ‹mX`R‚À‡î–¯8­ë„]`„årqhˆ‚ÄáliNÕØÔ!õ}bE Ìk\΢Tó{äƒ?I f÷šð‡Ýù´ñ!éà)¡ ­Y&Ý×LªÐ¡Ýs‘QµSCMw@8ÈÀÆP4tîÝ><7çjtHñýf^Aâ—8…Üš­]FãW6y]œDÈ +½À»d®M Q¯®ŽèÈ@˜=ì|,EÏœZ”X¬ßÚ¦ úŸìâÀMË6ÚÿÉÁÇv@tStE×-®5‘_Ý#ka t4­@Ç’©Â¸+Vª~Ûk×L8y¨Rq£‰b)îæWÈÊؼÍ!yåþ7 Aã÷Úê¿þ3äÿRK yÏùõÖ¥Gn¾û Åd_&Î89Ž—AA…F+ʶÕÏd ñ7 +$%wy@L³}n;4é„œ:*’Ý÷{,ç“úŸ õ'Ôáw|ÜRYÍâ}E5»\bS<0ñÉ}ëšÔ.a=Ðú%™V]D .vv½CìäX»XÌÿî&´–Úuºʱ óš¨;Ì s9¢€N#Þ±[rÅó¢{n{ò|&²«œÔLý仌 ‘ÝЮô}ž°"/õ.œ·ZÆ;dM_í5´gR·`Ε¨®§\@òýí+l ¶Òf3›$1àä[wÓ86îcânào{ÚŸþ;÷Ï t¶¶§äÿ +2¨0;\Ž d»¶¸µ3’©…i(øÕ[#$( κ‡Ñ’—#°Û3!$r«ÀÛg!”È'?ºa.ú“¶¿½¨T„Ö:Ñ÷´›œJx£$®Îš¡Vß'JvZQÏHbĈ¦ Nvöz­žÕè|ö(˜±íŒ?2¿ÔF„bm*źeó Ç$c^œ‹[³®e$jAq§¢(ßÒ”Þ0»5=0pÆ=oç1—Èh³Âú_îÉ{b« íé¢qTCÆeŸ#Hs=¿îKî^d „Ääï'ßÙð‰µ3e.G‰œÀòí§Î·Ú5C&Ø&ôŽ»p§HàœôÖYÐŽ³H«+»X¹´4Ö^mMcäB=ˆ¶xIœ\ð±½$cUrÐÅx`QOƒr/ÞÜPÙ± +ÈÇÛ+‹ T)S²ŒT´aÁ=~<1!2rîß(~-%0œÒÑ«H”~¦þS9½óØ…,ƒ&wÄ’Ù™¦åµ׭†â¦Ê[x;¢R6{}pHôÆdಠ+#|Ü’RÓ}á» ûŸ;ÙT,”ÁpÂBD\ñHUГxôÛêƒ +_«`Ø‚h#ì.¤–vwaìÎ_ÂWRâ¶Ø7~cÆAjé3ÄÁ4V©Ô¼÷jÊÙª&û—fÖÃÍ_߮1þi°”)a§Ò Öl¿}ºdëjº#žOíùÂhÿhF€ÉCöe:̽dKÀyJ¾ +Evv@o7ñIÓ>© }{`· µ•í†½’´À·Í[,RO¯×g'Á}ïŸo·ãÚ?uu0Ø¡e˜SRŸœ®k¹ s¾§E„X½AHJ…‚—Zj>ê¬äƒ(gVèAöòÏI~JâÌT1k©yÒi`’õÚG/‰Ì.=A%L=Ðâþ¼]y?nØsg˜V(`"×ßž>Ÿ€Ü- )’ìç—OY=¼ŒÒ«Ð¦ôÜžIïbË"×Ím> + + &G?#° ÝàtLMèZãÃ%x6‚¾•*0¯é_°T6Ú£½¸îÜEÚíYÏí³Ò_r„ÒÍ@ö‹‡UU&:*K^Ž`êö=²·Z Vx@ V苼4¥8ØŽÔ1BnÙ±ôà,’Àû|õ:Ãl|‡¬ˆMfº)óoø{v?o)xAšþ0²­*Ã%êf|®Gn¦³z™ù1P@<à +1_x/!Ê´*•O Ó…j¨Ã\“æ°¿» +D7²QO¼¶³ÿBÚ–›~†Þ ~„µ<Ø”mOÜÞZ®éÙ 6ǤZUç_CÆÜicìICïv(`@šeŒIà÷•´íÎÑ +¥”¶ÄkIN½° ÛœÜ/ÉÍ6¶íÏÃ…ïUC›÷2Ò*M ì(w%”jr/©_È®¡<“/õ©ÿ ¯-ªº4†Úӭ̬U7$]á`LñðwKsLA!Ad[qXúi.ýŽ Õ4€mŒÆë^C žºRÓš-I¾¯(0ÇÃGØìÞ +Ü”Ÿ°µú·æ~u\)’V +•—mó4âiF®Ž0Ð&rhLûQXøÅz¶'Wr»‹¥IžÁŒ,ûƨ®:yTØ“Ý,)ù¡O b=ÿó–ò @U¦e¯Ñjx—Àeke0Ã÷c›%ë9e#>Y~¢­I!WmVoáîrU°=«Ê*ñcLðï\hƽղ‹¹J¨Ÿ;ðÁHÆ69.ù?oæ)–9.ÜhN´±”¨JdÀ"o^3±ˆl,ï ^•KÜ•@魆ЬMý°Ÿy^O»$j³+€€¾J‚(2†ƒUêL) ÷ŒÃkÞÇínÎì¸N5†Tzv›Í.ÕÅÍ+¬Õé}`_O‘T¤?†¶p·AŽÂR<£é ¦¸˜Ã!-v+…Õgã!O{LŠ $¦P ÃýYmO Ì&º ¢ÿ!ÚºÀ©_w·`éR3ǶÙCçþõýàHdÇ72Û W‰S¨ÍšŠ"ý›ÌØW€âÞü/Ú“}€wØêh¥9õqÁ4Hç2i}ò¬u(>ÆE:›kB¬wtés­ Žo9£":' u¤ ÷*I©þäÎî.Ï©51ùBÙ< ƒFRž›F&»’à[@>ý~š*À±¥uåä¼¢.ë<[÷&íÈü +¸¬iÚK~·ê{P °Ü؃e(Dz{cÒ-Á„p9!Uæ‰H¥â”Ï<ðæ é.{Sï 8–¬B&uÛìQ‚îu­N6ïç>zQ[ÛÎÏ…ÅH«’M–YÈjàñ±Ž^{0¸ŽjhIÀ)ke0æŃ^Tãç92õß削<’R•BHžÇi®Ï>"çOøç¤E—6Ωœâ@ÇëU×êÝÔ†“:˜+Öaâh´'yn[¯Pé´5Ûm2«/3þ'¹nIN–TOmˆ´ xZ©êÝDÚnd-#O¹ªTn‰À³¤2!œF0LfæÛžâ»0‰†wªÖ½T@ ¿\–¬Z­Ú{‡dšÇcÁñhK”VÖ²ŽûQàŸ©²özƒa‘±»QtèÛ>ó"šË@g3–µ› ½çŽp—¦þxVÙóDf$Š&2–kÉ'ýiÇ +¸ÌÁç`,˜=8ÌS¼× EXäÍ<§wÑgerÚœ6¾ž?5LʆÜ@#ÒÍþ¶Ü%'ª«ÃåAlF’‰áã>Q̇¬ƒ¡2èEÒÍ…©õ³'ä’Jä`éúä6¨K+Z9„va¬ å „ {±Ÿš¸0s€\”îþi·7Tf“W±¯…¯(HfÅùxê¨bÞt~ý50´ùΨxŸWé@&>üÈŽ z-Û^ÁXÈko©‰ÙMV$ɨ! BB ³“?x¤‡‰ÈæÓsÞºó„åìþSŠêCç©A¶'“´Nz#ñÓÚÖ¢Ñ8Eé\di† cû>ÞZ¦4o[jtáÀbØ­a3ñ>þhî‰ú);`^Ž|TAó;F m›¢’½´†–Àˆ%Ž¼zØnROŸC;Ý\7O›!(¬¯¦½"Ž’'Í¢iFÎS4DŠ]×[ª?Í·8–0†“Úו0®¯x=;äÏ1V·ž²§uŸXl3ôq]A'kQÕ+2#à“¼L!ÅöQ “v…!Ύдd8¼ +©)e\ÆyÌßÖ=ÇÏ8Up7ú0+Ò@±Ú)p[T¤NF&Á´Û¿1huÀãf[¾åA=ö’r’§'rµÿt_þv,k¹ûI—„IÔNH:€F#ŽÏÑbgMÐ>$cÍl‡«Šæ>«µb&îʼnÝÎÔ¢Xòsjs$)­rçU±ˆ„: +q_¨ Og#qˆT™C,:I8>è„àÛ§€é¶Ó°ÆŠ¯†L +1“ÃϼŒÊ®k%3‚ËRáP´^ϾaÆëœH(nƒ¿«KnØø5&¯ˆßîeºÂ•Θ¶sr1ÉoCÎô~ð¡]/¯u˜¶õa,[Ò)¿Öý·svùFgÃ,Câ„%äÑ8MBäÑQ¸¶Ô wª r÷B<@PmØ+v’D˜‡oj vçY3Ù?Ÿ0K¡µ_I¤ƒ,Wh¡$¿(f?[óà]‚·ÒR"ÌX,›˦q&ÙÈÖ.ÿ&+²A…äeÊY/7H:ÂOŒ°`éb$`¹ ÉÙvT1`ÈÞOy÷Iì-qXt’aPç#ðn Lãf]{«§(Í@Ûm¥M± –)jà"HSE–Ú·ˆï-ZÒaêmúuŽYµYfs¶‚÷5µÌqÌFœF›/¢ö&Ðãùíи`7¹°¦à>w1= •Èa; +Ÿ,¤©Eâ³D¸23Pt£Å‚ž—h‚OÓ‹èXPŽ²å¶Iô›FI$õGóèò¿uF¾â:W_@r¦Ç7µæ»Ë<Î*#Ìû·znñÐ4€”TN?ŠT3ed£fIÉ܈{пÚ]­›¢®ÎM mrôl\Ÿ¥jn<¥#r¬Þ6é ÊÊ9|&ÆžÐÕ®Àž¯¸–Á‹D±Î+Ÿ¹-ý lU|aÊ©=(?õM„Ê[4C—þ9”ŸÁ;á ã%“ÍvXpÆ®#¦–8mú3/Q@@.«Æs÷$Ò[/Û‘(é¸ØánPèB‘‡µ{•â3ßxîÀö6qd–À«á‰€È1\ÇÅÔ©@YÌDÕ*îAª_ )ffÜ ž‡):F![!¨@1O-5ÔïJ…†õs2_¯}lFoÏÐÉs¢¨Ñ0ƒ….pÐF¶kµ1‡h] Î…‡ £lÚxÝÂ,ÐPt•üXµ£—HI`j^™^ë­ä•CO}©&¤ëÔq#IÙ(wŒ+eÎ6D“ìhiNf_>²:Ô]—²vA_OÇiæpÑųJáÐ;BHù™aÄûø$YÝnŸ0rÚvÆcüç6D>Hf˜õ*ohÛúAÄÂ=šêÓ5èð° Û·,Ö›#o¶å#F‰4ÀóݪõöYA$âÖõØOoS¬³5ÌŸ“|ÇQ–Ñðþa:•w©. pXÂå |Ÿ%>òê‰-îòï@  ¯*Q³ÀUyku¦B¾X32£–WxY' ™û; ƒjR¤ßM)D§• ½©ñ$}Üê?fòq”4¶^ Ç…'Åt‘ƒx™%é‰3>x¨¿÷º`åéC4pÁpz˜ûD (4F6ó%{§j6šÚ’ñÉž9%#˜™ï€a#{G‡ñ†Û±gš¿%rÇ4óÊ;ÜäÜ}£Oh¬ŒŒ‰µ7¸’L Ä„Ƹï­Éãö<ÀYŸHµö/"]AyN=5< )>Y?g{n,F˜yºÖä_4WN<@ $Xó×ëMé8`DaH‰k„6;¥õmàj(Øä pTf€g‡|µcÝϸ$©º‘衱:Û¼mìRZO U) )±ÖãOË(0ªsqÿÝ‘.:þÒ¥šâ7ù]Mˆ‡\{~˺Gn`¸Ó |ÐEô190Šb‰Ûmi9ZÒÇUñe÷*zØb5hz¶i_l»ùxé¼.ó‚X'¯ž¼$ZVº9ØŠ£Ø—/€ŽE.G¶‚´CãKURg¢"qúբĢ®qd«…‘/u€xÝ ˜¡jåÔE¦‰IÙÓ•ê5Ç9ñ É‚¥cmèË,mèЛ—Bû´7œ> endstream endobj 17 0 obj <>stream +g´ºY\Q°èöËa'±‚Ë×5‹+<£S=0ÛXtªÜFXršOC‡.˜ÇdFK@äkÊvð¶$þä{\ Òû¸_È(ÏMÀÇIDc>¡wÛ¶[]Zçõ¥Ï¼ Œ±›†™}ÍÝ.Œu©ß¹Ùh"'ŀȥE2WTC›%³xmif`L™ç<Š²a…b¤‘ø%[&o¦Ð +šI"o\•”L7ÅD^ ÉgÁcØ3nŽ±ÏÝdõá¥ÓMö°„à%ÏáIú•÷∠Íâ?^À)þTÏ'ÞjÐAC’§þü™u˜"Z@(“n'(?¯x$cñ^sç™ÖQŸ¯ü­#"[ˆð[õ?‘Ë]>÷ÓR'ÇsH@a—@¶gE,¥{ëtxðÕNùþÀ‚l|ˆ{ÏÇ@•|gq.l¬)ãJ[5IJ…É6R°­QòEV×Å¥Ä_‰ÜˆÎ `]­8ÁWë»—x…j³í  ÍÑ'+¹“öx¯kÛ`/£ÿ¬ÓúJdUªLç ’gÎ4NO\93³g)FUßMìSZ¶æ óä/V/6eß=0uÜ0/›mÔŸ5hÞ-ðÈk×Krn‘n6q¢ß  ø²b$„\')4HÁ–A,Οûñ¡òSOÔÀmŠ8as10£´Ð1f ²æ¢p~=;Ë@^s˜‘\ö†2 \[“$‹˜H×»µQW™At*ÁDŽ­§ëFò§à½ZB%@*Í>Ùè=¾=´d|åɺɞUÂ2¥V(yKG—·Vè,0•zOIªü47~yzœÁ:£kM +¬§ïPγ3¼ÙÏ1ž´­xr:@¡ÁÄ rss FÂYUòÿÝÎ)WܵÚe±;óf’  $ÇQ±l´Z²P¬KÆ\7Œl|(õJàK ˜1ÿZ«Òt¯›HÞï5¿A(JÙ )ÚæÛŒµõ¹èŠ-Ÿ +ÏN GÆú÷3k5D*G3UhjÉkRUõ¤Y¯ ó^êZÔ'zÿûDXä:B)aÐn%Z«*ùXlPYLªFÞZ’´D0ÉPT²ftTh_êRo)Iû)™´hVÛò¶zðl«žÚ„kÚA»–ÜD!eü@ctŒš“¾]¢Æ]]z@Å/’ÑIÜÚ”´´ feWƒÖ"›Ë×ß"f);®~+¸0iÍØÑÆø!ÏÞ+€†!¬¸¹Ü•eÕ[JR>Å”A;`É\\ N¤Å€!¼œÁråu¦ÞŸâgU¸Š Âfs¤e·(ü_1´¢]>šÈŒ pjnÞuw`‚ÿ®BÙAÍ¡³Ú5ìÐÓq+Ê·55”B3Û˜¨;Ke´»æY/ã–)-~áýÓ+³ÁúÖ;2º<º´OÞQ§ix…Ô§˜«÷<É°¦ï ­ºYQáhŠ«Ô+¦ê„}`ÚÏLö¸N"§réégü¢—•žšš#X܉…"ä¥lyÝÚäÔÌuDƒ:AhaMB{ïvºÞ!98ûPÛàŸ-¦uØ”&«¾ìˆÍ_3Wòž„ŽÔ+X“l%ŽJ¸¸MÐ¥6kÉ‘b6hw²W°dË-ˆÆ{‘,LRq‡¼å~À‹îEŽ¦Ô²b{,YŸ  „¶X’1pU£Kœµ¨!¨C5¶Ôó¸‡l³>v ¡ÛÛUѺĎ5Û[g-±”ý}î¸DóÒ +Hìþ6·vˆýR?†qÇ‘ÙÙýê`É€iYÓ/óè@:,uBq.õ³r†˜È?ŒÄ ijëS!/ùÖŠÍ-¨ÀßkÕ[~pChÓ@úlÁ†ÛEu¸ÍeœLõ© ÙéEèD¬¶(B?èÈ{yÐb“_@Ѽ¾ðø’¯}µÖ½…КàÀ˜yÁÙ?8Œ^X½Í—šNq›6sÁ\{È.s¡ñJâ(ʘí«ãŽUPK5ô½àT ž¨ªg-I|ƒIz$ÓI §[/ AbiŽÐ©ê‘mÊüú:¢Í?ç!=—ÜoVa®Ì_ +2ÚëåìDÕ¹4>T5ë1^[÷B–Ààî[>)™7Ã$Ü)4Íò{ çZFÕžŠ4Zl£p‹eï{¹¶ÑØeç{J*9SÁ¬e¦ñE¢Í`›-dôô|Úp0Ÿg›V_òçfM*ù °,®×VJIWÔÚ“ê”À¡@âà˜õ«^ž20ÔAÁ¯'L"2AÌ$Cx¦€‹­Æ§ûËPÄ-Ï©&m‰3¬ú™àLª%f$¢±™äk"FU&Õ™ u^ýO“Tÿ`.¾Éì@6¹OFä[`"X}Eäˆ)®CNW7$AéÂöˆê Nfq³z,ŸR# ÂæG¨ãu ÖT@• ÇðŽÞçŒoå»nÄÉÔNo|5_žÆ‘°°'4å^+Kba:­×¨ÓŒÿo„ÜÉ湇3d4Â!UÉ(ñ~1>Þ^Yþ 0µFøbuðˆ0Eµ™R›•½Ô!ñÀÐÛñÎ<k¶ÉXt<óð–ß4¿&…¨[8ªóW<³ÿÜ•H«[22×Á +t¡غl±Êf÷oÈö9`WÄur¥QF‹ÎÇ8u„±)ÝZÈo& ­uÏë¢fo|%‘5X¡&ËÐ"ª˜3gpO.æ— „[¢7òhLg!frt2.^Älst-¡¯j”.”:aëA`–õ€;“†‚8H¥šÃ1Ì;5äÁ)¤Ûzî’ Á¼a¿›v>?9œ´±éæõ{%ÏGfcÙ«ý:.è% ¥˜áÅžFåYL¢׳9óõ‰Ë§Xßâèé7ä²ÂúHœXQèì6Ÿ8壂&çq5Ÿc¦ì ïÌõ x îqPzH-Ðó$7{GÞ‚¡µY´/!ó™kéXvvˆ¡{ŽBsS™ù¬`v¶Š’«c±ë£R@rè³!f\´Ä0êyX_xHÆ#Õ,´^3cü†ø”  rÀçe,„ýý3‚Bü7QNA%iÅ÷· µ4~%.¦ÓiÓêš‹êup$¼y.dTÀýyÑ®IIšXQoúª¨%ðdzdªS`YDõxÔÉæ‚Z.“‰P´!Ë} Y`P:Ù„Y‚;4$“Žì=W€šM<3çŠ47W¸Í9Î »”¼Ieh¾ÄÈQã³ nëhêÈWep%Ó¡f’àšÏiIÖ“»ð§2³ÂKÿ½ÈÇ®"z žak‰£ñn˜.º™Áã¯ø«¡G;7¿éhfl÷P4›JJ%­‘ú¾UwÅv»ƒM§»sdseç0†"Œß©9<||!yå8Žì³ªŸZKE–@<64ƒR£ç„¹p… ÌÃ÷ïù/C®Õ´J1Ó<ÓI`=yAÑ[äz³ºÏ ‰éÁj2Ù ‰Þb“dæ;1ØOÔš#òØK“Â~‡7rFªÏM“ë“gÞ•9zðFÁxÎâœ]m@º$š^îyaùd¶QÄÌqIÈMQë]Jf(Q)<- þºÎ˜*×õ*ãªg—Řñ˜Œ¹1G YXëÁB2}ró2ñ”7• :*© "E­xXDÍ„äÜL +ßÐЪÅk2}3‚*;°šÜü ´IÀ{ºfŒíi¢‡h&=ml=Æ6 ¬Ë¢í ØAÀ\12Y‘«ÛkТr‡»ŠuCQŸ.kÀ …ÓmAöf_ßÒ Ì Òι_I7Š™'îyÍøx×·¸›`Üõ¾ |[à>Â×›è¡G°Ó€TäfÍH·O¾b>~´kŠáHy^E3%zÐpÂoX +{H9!ï—gøícUbÁo®ô™2èŸôËßò ÷¶¥¶*4ˆ°ÅÈÔXˆ±¤ ü]w¨üúL|ÿ@Ìèn¥†Å@0P¯ÀôÆgë–ݬS—ª…ƒ ="9B>äªUúÍ#%0&ôõ^¹`!×èjéAF²"™+;|Ì€Â3Ô/ì\ÆNÏAqHDðø#A`w~g l`áÎ9cðè¶jÕU.Ô…€~7›Ñ5=1*g¨0¤©½%عhkônö¢$‰ó-4D+‘®vÜ0 õ§%±a.ÔÊÉŽSäò‡…º!nèùðª<Vv©¯¥¼ÎÇšÙkÉ!•p¯ñÚ’kLöYGÉÈûò•>XÚÔ†ŸÖB&KPÒ!7CÄé¨Ìƒf3²Í¾ªÐX6m>Ò&ø’øO~8U*’s¾”Ûäåàéääêš”¢Ë8“o‡ìå`ì¦æJÇwO0ç ÷ÃʾWlÓdLåÙ0Š@] P•nÝl«¸< Z±@P~ÕŠæ²aÂî,>¥ÇÆ–«½¥‡ÇÈïN`{ã€HÐTO;?]PîéòÔô†Q"Õ˜ᇶÌOÆFèuï¡D5¦é•ý™ÊC¯Ô»~1Îåü”ɪ;¤Ì'žwœ€¹P]í(ïýAòogóžQ½ÄÔIƒCÞt¸‡¹iœH®xŽóÄ€Õ3£e1Ý5% ö v¿¯¨ÈZñ“¡pBª‚–œ4:=«'ièç—gW…˜Û’·$†`ÁÝw:;o +¢ë±—ÇB„S¼1{[8>ìž¹Õ´QSûwÅr`Õ¯=êˆ÷Äg×igH¿¨ßž|¦]ä¥Tâì"’ž` +}ã‘"6èíÄ=$71©U »R¨qÞjdI{a·î_ÞŸº}ùÅg}¿¿è°\-—B‡zP 9‰LFí—8æîÐÊhþ[—Dì[ g\rÔthÂiÊkîTž›2µ$ã»!U„ÄQª(ÙAö¢ ¹^#ÌTnP!Âõˆiç}/“FÁËÙ4ÃF¯(:l#°¿,ö’b¥ç.î@U‘Æ HÇs0cô5À Ãø€À`ËB¿¦xñÆ°ûócH‰s_±Fáÿµáù3F¸gE ænbÓî*(v=Š Xª\4,^óF´-×|Yˆ9 ' Ä“Ô%c UAIKuÿT*eÚqBèÌß$:@íFñ6ËË.Ê YRè€Í›4G󅣞(pgÈ,³|Wq{™’bß7R­V+äiÔý¢>øfI\5—Ê'ÉþÙõL[m¬Ì4Cº%>a}‹°Ÿ"ð°Q žFXœò!6 ”[øl7<\´ÕÒ€2GF×g¤s7ÌÌ ?ÎC¾<þ*@G_Àc´‹fCsÒÖê_ìnê¯ïêCgßìÏR)gDfŒ‚AÎÜt¿Ši*I-I³ø ÃU…£Øt»x¶ÙBR…¨k^ïyqµ}¬®K€ +ã<¯Ûÿ"^ý1Êz¥sÇ”5uˆÛ”VÉùaÿ ƒ†°œ‡»Û‡*óoé.,k ÌwŒ,Œý†q;x%¬CPy Iï²bQ~Ñæ^2ª #–‡bàà +M˜¡n/¿ràÍ;x +&f4&É™)…éwÆI™@ÂûqÐl?½{ Éó¿ü¶]R- 5W³­JìØƃÕ‚3|&¤·l)€øûòp0œõŒØ&ø!{…íç²ÿ°éôm110!¸ÏM¾,ÄJ +µ~eó4ÂÅ»öÝ ƒÆƒþ ½DÜšà!ú·”næWmŽpPiûñZÏÚ¯±ˆ¬‰œQŽ%XÀãnÝ »0Uj'#2®o·ÜÕÍß·7’Jû÷ˆ9fL€à[={܃ú¢ÝÜ8טª×Ýì…û2)d²ÔÖ½ÑóÉE™61z¢äçe_Ë× a3nx^´r>hyKo…Ök·)3‡zÀÿP³ULÜÕ$­\I¬«V cLÀPŠ¥zyYÊ2NÛD"Eà Û>”Åx26uÇ”t™¬*VÒ'(¤Ô]bZÂ4F\î#¿ÀÚH’´uö"Ëç‚ÆjêËF“Edqo÷Ü0’V-dŽ§ÛÌ'ÉmºüãÝ&YÀìf=…õò¥p‡k¦nÒ‡oP¬gÐÂX¾ß†(”®ƒV»âï|]KJzÑŸ‘Þ3µO‚*S½<%F` +ë˜æéÔó<X龨¼„}õQÔB +Å•Ž8¨‘™4àð"ÿÃõ?êhc¦säDqãÁª}ž"-‰ùñ&@ì«fc+l:Téú .¬Ü‰ßß<ºyA±!Ù#³06˜N+¬ÅÙ¼*ôxrŸ(n0Oíîϲ#¬ŠÀ¯çµï3A‚u¨§¨I4ª­Ûaa©pðê˳LLÜ“q»—k»h!©™9Òµ Ë1?"ráŠÆ 0'0ð\OdsÛuÝT°´V› c»7‡VØ`rDò9Œ0¹×çXmLhR +¨DXG±_^s«4m;‘Ö@ü8œ±d8Úý3œZhîüO„—ÙK\}]aî¥#Í:®u&Ð(¤ *¾g$Ý4jê•´GhÜŽ¸0¿“D×YÜý«–‹ÉEâ•q(ØÅ©ŒpÕEÄ5LòuCótþ1µNòØæ %—%1ƒ/ ŽVÿþœßq":¿ñ—’$Ò‡<õO瀲â|4í¹‡i=ñØ%9Ž.ÖƱA½¸1bÍô^8´o£ͬ­2fŠнþó_B¸s¥ å%÷œ$h¥¯žË6©Š'qÁÏ>t0b–ïc5ôöT7tÉï$ïl˜káÕ^‘¨ŽA’ `ºÀÔëh‡9eèì+€N ¾˜Ô”oV?RâÃŒ2pM¶x“"`¥ ˜¸§ù“|q ª}›²t n;ʽQ—r<½®`)›¸K²œî6ØcCÖ]˜[ÅA=e<„2WÉ„œ÷…õK· +ýÖœ—ˆSäBE0-p·ÊŒ¡$zÞ®J®¹q@E‹A¦v—‘,×±øæ$ \•Šx³<%Ùjü´vÎNÐÔW‘DjpD/UG ±$Ñýö´¥æÙž¸vZorÑYhÝJL›XVV¥5‚ +giø2re9óëœbÃ/xVmE-m¦A2:.x‡øS"nÆØ$b*Õ…±ep—ól¢”ðÉL…öÈ­ +¡V܉Ñò}vtÀ…÷#sU ù†zát6Ï-ÕÍ ÄÏ#Ô+ä¹9¿)Èö{&C'÷ûû4™WT~GI/@×¥ŽÜ—Ù>N¨Ó)wÂUé;¿øÍRå¶Äe ôˆÞ*r8Ìa˨"Êœ°5oé$³ezº ¿lt5ý]qhôè›Ý覸š/Ž½‘ rRMA¶6acßÞ +·Í& Ì+Wq[ò¦Áþ2#¡Õ +·¹êµ5°ÌØØ*dþÚJÝg i¥ÇVYT¨ŒkBSCcûû¨›5ô¥©óO(Ñ´|¶X™^·?U MOOâj’‡güìt­!Ƥṇ/ÔKiØ}ÒÆɺÀ|ùˆÙðé3·IûòºEà ²Tl° ¤|BÙ»Ã116=¶G' )±Ö7µÏ–îÐv°à®Ml [Ù&ðÐ.* ~¨à(Ó?Ç„¯*8®ØBÉ»„¥71v…¥™ b¡?«ÖÒûÄ9b,k=Áª×䇆vú)™DŒè£u¹F”)©£+€|ª8æÄø~(B²[F¯(½^l˜¸‘nAPÁž¿ó:¸’±Uÿ©yABý¯¼òfÎf.Ì:™ v4çÿOÿuƒ\‘kœ ~/“ŸZ¾ŸÎc–nU®°£ãHð˜þ¢„áš$–“ÔS±R‹[ñûVßôO8PÚuœÙªøuGFÔØåŠEìópæw£Ÿ$%AH­÷¬4nÁf$ß[v­Ã½Ã;ÀÛ1‘ij‹KÉAÚ¨;Co“ÏRXïi…¨7.y—îA¤æM¹N7Ëp~:&óÔ‹¨f0¼ðJø +Y²ˆu£6€âü"Xa,fH´Ä5¤› .%½§¥âuPüqŒ£)ílâ~°N)JÌYã$ˆ… Lá߬™z ÷ÕnI-X™Ú¾£è·`HïIšˆÂëϸ]Â¥ÀÆ⦿Ó‘%nƒ©?vƒââ à\1L(¿vý•„U1L­I×ðø* +";E úýG!`«‰÷h7YüW‹&ˆ_þoi±%É,SŠ‚h² ޻˱öYì1‹¥AÆ £Ó0Üè‘Ypœ *ÞU!˜@Ãʇãg7W2‰'1- +)cgØ߃¥‡OÙÇv›€Ü†û&üföèÆwIs… nÀæ·kÕ&nUÈåtlÛ{!ëãMª?üùõ 6 Ä>\,8]\Ó]BÉ‘LF¿­Ç0ÊJZ"z ×?ó[Š'fÂ6s”£?‘ÒÂ[è(­à^·:䘾±rÔ?ÓH†I€=ÇŸí€m•.½»×3X䵘Gxr/ 1_€Àt’Pðê‚S^K¥ÏA-ÔkÌ%¹ÉÒŸÚÀ.µñ°‹©!¾ +œ¿òŧ˜ÓÀ!ýм4[é–§@@¼À¬Ôipd.Þ`Tµ{³- @h0O¬Ø’ÃÑË£þ 7ñÇY7(¢ÉïÖé3Ìy}ïoEuƒ—(wîÿ×Ie:Uµ³xÓ†b= „I[¤$ßRÞPn(UmQÌʧ…ӱՄ侨$Rávƒ¶/LðHVk3hîMý÷ÒÚ"bMór ,_yG³"Þ¢”¿V©7t^¢xÎíevogÖº§Ø*D‚ùÆL×÷þ(«30;>råsg¬_¬:f’´"«¹@ñôG¢\5˜ …àÈPO2D$‡—òÌ°*ßÇŒ«[Æûa‡œf³´S®-[[ÔÜj‰XsÃåÿ1Xí^eøÉÌGlàÉDÂÉÀs÷÷éÂñ'$½é-ÔÝÒ"6À‰Š= ‘Ë&n—<QlŒø0°%£:Œ½Õ/"‹O—´DÕ¼ãë—N¿M…5™÷å¤s'ów‰ph».cÖí½;zP:„z¸…z;Jªrg‡çÊ +=òr®{¤ï1èð#ƒá(ÿ¦" / aÃ=„Ìêì :e{ß7ÞXæ±æÚFŽs;ëv_Š*‹ÇFö­[>È œ¡na/µSN3¶°päªHU°2êŒËºæ3l<ܳ–çüÒ³ÚñÎäpã¨3˻Ք>‹s¸r™Ú½!ZÍÞëJ¨´-·R­r¤lL¶cký×J‰cCHuY!¾ؘ©T{»‡/2z7Éš‚„9ÄðÈ⿨ö,Æ64ÊðlÙpM,Ó¼ü$a>© ýÊRÅw*|!äÕD2‡,¢§Fñl2¹Ms¬&NçðY#ûŒ‚A{»È“Ž$ˆ¦JLÜßj=d! +9ué¾ð€((›ÆŠîóHˆáÌE¸t ʄó(djÔ°_“\ë› ͬ®Išà9}‡ +ôN䧓XöüGmo2’œOÞ~¿åLâü¡ÃRŒBpt`ù¦µbŽ6  ¸‹:Ûé UÀÆZÚ\ÈÖs?qIÛMò¨‚0raÖë`k.‹qõ ‚Š9³™‰QäzèÅ=(cR˜´t)b`,·a¨u,ˆEµYN´k +» æ/‘MíÇœ”eSW¡ï/Ÿx„YC@ú_Óbçe$2uvIŸ\øîG¢G{3¡Vd``—»Ñ& E?¼´X„¨4 Ÿ›®Þ9„åB\"5¥Â³ÄQ†²”œ¦¿~)nþ’‰óýÐñÞò8ìξyož_Þ¯wή]µí×åЃ×’w¯MEbaž´š7YýFYü™{@jÚ ³¡ÝËð >R$¬Î?j Pk”ˆ|/$›„ˆŽØn›§º¸‚tFÔ¬ºÐ IïRˆŽytñAý’vN–´.¡:˜šž©ÀÕ~Êœ%Lƒ|ô8áç…ÕŸqá"»™‡Í"ê”xøpÊg=È0~N™Ü¬Ç5°j6¤ˆ»6wm‡ ·/JÄX‡êŽ³ÈŽP;8„!Ãßhó…F/PùŽdgÝô„¢2ì38 °ÙsÅ-mˆ€!t9®¼Œâé18^b“ž0/»øšŸâÞžâ‘ib±‹@†."Ûd]øäh‚ü:Ü ŒBÌ¡|‰^ +üfÞëȪb¦‹<¡†8ï«AtéÒÚ÷ mkã<¥&m!× YàkcÓSp~¸¨`Ëй¸ÖwÒ3P ã3¡ˆF)qœà¦AKšt™Si’«p g¸)6XýºóÝ’–×JÔ9ø2`ƯslÞÎùþ¶Ì 0ÚØɘX+žô­}Áú)-Þ]~^q1öµ6¥‘È%~'÷Z,¼º}YLµ¼à€ñ•3Îu†YË~Xˆ›àqˆÙ„ÒG(Ù¸k² ½¶Ò‹×BÎè4¼wý‹†O|ˆ­3%ÙãðCc $Ôj…è¡ü(5–æûêR§¡Ž:•Å#À@¢ËþyâÀ¥WÏVÑ)-ÑPb§DÊ +/+ÓŸFSé‰ãûAÜ`eµbWsg˜B×¥ù^8BŠéË’Ín‚Jc´d«˜yHG‰2Hðêqªym–kBlc½@:¨×+{ÃO°£¥ò"]ˆaçöÅ‘kÿ:_ hJôaí®€+ÜÚá:Zõ9èµ f23œ…'f¡äbc=æRÎO´å7~z1PRç¬É±eiÅý)¦yÔ´zCEÕGtYM¨³B#âò>¢½â +ýt +¥ +ù…B>8¢ˆU³¯¸33 L=ï°ý¥=)1y}ŒiÊ +1éŠnöLJMrù10ÕÇ•ÀÑ|`£EOÓgýˆ;§•J:mZ¹îÀ}¨O¨£”›ìÇ ƒe¿µJ‡ùïiê ÊáM?ƒÅÀÓç‰)äk‹œ³Ì_mã5´"ªc‚#4µœr‰Ä¦3eq,ôÙ†ûØ~X#Oˆ™±{rE„œ®ÈßT„ƒÑ5>^v+Ɇ§A‹=†ÐwÌj‘™*WÒ®Œ®€³1~øÕCÜ(çJ +î'¾H‰Ð¥Ä:é°fôh¯â)8cÇÁJýÉ‹®ò|.çƼID§ÄÖ˸h±‰ål@‘ÒQ¬EC/Š>7{"-QD‘ ,…í– +b+ÒBÞûCbÓ«UóÃðµfÊþ{°ìœæ’æv2…íJ±¸ÂZ¥a)ÑŸþÆÖ9V¯i3ÃQJóª¼3Ð#6HáIÊ¿’ À…0Æ÷ÿ8 x…2_~c$6˜ã ãBQ;È«fyÎwä0cù ö³«>Óê (cª‹1ÈûÊëø+šs¼u= ¼á&Äöì]#ûà¿VAïbpÚÁ¼ ‘#ÇZ!Ú€eé¢ZÀÞ,éÊtŒ ‹>4ɱàÊÑcÆ‘éän¯w¿9R+ŘÑf¸ ÿœª™¦9;aÆv¢wå2sXAB{l[¬Yfæýb˜«ÖŒX# E ½zÚ˜´Ç°»Å¨UzXä½$àY+쥮qî(+£Ž-¦ÑiQVˆyRª àP›¡+m†žŸp¹ ý¡¥—%pr²¶hK™RÌ(sÚè•¢†5ßáïzþ”[öÇ$´a÷ºÂÀC’€¶,Ë&õ¿ù°i³Pôꨢ’™ffjý˜¨>*«¼°.'¦%`P9¾6’Y•HΘ¯œ|œšMnò ˆ K5ÏgBTtC—pxU¹L÷dõY +XàIŠ¯þÂ'ÏÜohêþ4Ok´Ñ´§ö‚yyÄæ’Ž©”z îûè4eÐûíQYec³ž˜Œ‡uïyÛ2¾NµÌw.7ù`:]¦F&n¦ËPdcetBùu +îš4 ç +Jày)Àt"ß÷î°Ý-Êèè¨kI>¦ ãDN×[¤Pêb~ªA9º‘á[wömB¡¢\kB•™'ã6îèýÊØ +°PW‚áQEíQ‘†ŒWñ€ýk^v3çq¢kÈõÈ—™ óêv;“Ù›€Œa8‰£¨VÐåƒYIQ{nŒ,MOÄIxîÂœ''Ä&¥æ@%T¦å¹$wnˆ`°(˜v94ò´g/bZºÑåý> Ø/ ª:@@«ðV—×sªJ#_cÇSòE‚`Ó›YËQ²…†”Ïkl”ªÀó5Í 9 [½7Q)¡ s9çzhÄTKsea¹¬¹ÑðÕ 3ž)×+ÂÀ$T>}a,¼Ðw*èÖL'jéÕ ­½$´•MçݸV0š¬A´òHɬv>o±JMY§ß1äë¶:Q9 X*=v3abw4¶’÷"|èÓ6t$”9”Êod1}—Ÿ íKš¼‡3gö ›U}VŒßCÛ/ÂÙñ[Ô4C;ðûiê­ ¯@üÄÝÀË@­ñ,ŠÉ8gS„±# +aÙ‰¡ª iø€yÁˆøˆ4¡x1²/Ÿý= ´ŽØ=v–md[¦‘Ú-:^–V ßc^±Û¤Þ°ŠX˳f”ö~78oƒeÏÑ5¹ž¦-˱ÄУ¨È§P×^P ÄѲp#{fqTÏð2š§Zõr½<–x@œ]Vã`ˆl¬©ñ¡§v]ŒW¹ãVÝ'G.t,mÒC0·Oüh*OÄ*$º—àpŽ{u— qP= 5¸VüëèÔmvuÿJ°B* 5©päÃ.*7|ù:™Ö§vƒ'Ú„5^zP7s2²x7‡¨ éHY1›=|Bˆ–eö-.T+¾‰. ®A£IïëZ4»»$r‡¸Æ ªEöš°8l½]sÀ¢ÙUtÝ_QÉM àt–Xm•œxD þ &‚èúA ã"¥å‚Nå8wÒ$•·I´@ž-;P 2ŸaQÇy3þ©`í¥V“”…B²a&wiŽÃ:çKèëÿ¬(çÕ‰z/âÑY˜€W‹ïJšá&‘f¼¬®pÄÕFø”¢%—wÍýY]n†D@1 Á‰£íNjÿÝ°5¼ÿÕ€N³=æ E=Ä qÄ»k×É}5^}—¼!£Zî ×Í‹¸î®¨¥¦ˆ,×+Õ»ÏhQ;D%\Äc÷ûãÿa‰?I¨0î“ÜAÕŽ©L!˜®{a÷®Ç=}-«LsD À¿¦ù®Þü6°¢þ_±AíXbœ~ +oz¤ V¹ë4 ¿5®@jæK8Üüé$Ê(ŸnTÿðí@l¥—çùúùa*÷Y\Xùàô¦8qcUƒÊlÂM‡ÁÍ%U¢¢…f€[=JÜè•œ±É$¶ä{‚EQàz^׎ÐCÉpÜ&Ãòƒ—2V® ²fïe¼ùÀm>ÄĹ{έ<ÛŒy‹T¥¤1§Uò*ü­Ú_°+ùçèÌ5‚^„ëx +*¨€L]Vh,Bª)=7g+óI +‘ɳÁ×Á%åŒ#›e +©ðŒû¯]åîÿȪWBo´G×íÎv{{ú‰ Z‰ñ¦ÝS6èá#å^Zá²¹ø8KÂÆWüåšõÆüYÕd‚­u—ŒÅ²Ø]MÙÁãiˆÉ±.*ÒúO§S+€çe5<4¿âÐ&Aj/ÕÂáV` ìâÀßÍJ߃>g9§åðꇊ›dœA݈ E\’w¬füãï•JäKGë3=ÄxÄoþ ÇéS(Ø[-¬3ŸÈ`‚Z£wRúEØ¥¹(Š)meܤèÞœqiaʵ:0‰9üšlÀÕìç>û× p—r^6» ЈÂ'n[D›ëÈ€Jtgº'épŠ® èúc +–·d[rðð Ûn|Ix?sMáªh¡«Ò·MR) ':®N‰AÇ{ÆáW°vöÏ«ÈTò¶"­éR +‰yirA4de§/ß,°*éàSaòCƒЕq‰Úø¸ RU@fboaQH7þÚ"æZÆàÎÿCCR‰Óš]Ä Õãï°¥_JšlÇ¢Écm´Þ`?Íw–.­ÎúÅO²ç—{k·ÍŒ@³KÂPz©/fî³Ù‡N)„v,QÕÜú¿a,.=R˜÷^žqÜWŠÿ¯O¼«CxškiNÁnéX¨³e¿ePØKf½³)lnC·rü÷¡)!æ *xE̋܈6:â†BB¹™ °Q< +Ζêý;# MH©Ã*˜ã ,ˆ‚0PóÄÔ¢ù¼Ö¢p"Ÿò]‰§…qá +ºè`ñpy²ç}€4$¿Ša<qQk¾R w¯ÝOöwGX˜é'ѸÆ îñx‡?æÚÇí15ǧ¶µF&¥ñgŽ‘&9zð€› ²›À–ùÛÙ^g +ê2€†ËëìóÈi3þ¥@¥vaÝÜøG‘+^¤Q‘ÆæïœÕ˜~jg2 8¸™PXG[ŽšöjeÍdƒ‹¬HÔÅ,tP­Ýs‘bî  äÊÌ%@0K›<Ñ00ˆFzJ5»!?, Pcèo¬dwŸ?dmKÛÄi{U…ÇÃch$êkDDüë¼’"¤ÛŠÇºWP©Q0CH=’‡ãÁÒ¶–€8¨Ï½Ò¹¤B7ãŒÍEhóç{¢[Ñ­ö0ùÚb­­°ÅdA–{8×V|Îb+ÂÅàŠsµõÖc͵åæŠmÉ·äËv³Tƶ kk«= \°yÄÃÁ÷ÆXÏb€ð×ÚNÅ?Ã-ÅâmÑ5ÆXßùc æRü3>ÂÏ%Öc®•4~,ÈgÌ–èî•Å?s±Ã‚ð +v²˜[mŒ™Ï%ðØK`óˆü½cŠ‡ÃY l7{iüYbAÿˆW,þ«-ÅÂPŸDú!B¸ÁØEWù!Ž)ðÏ p·½ÂÖàkŽR¹¡v­1ÆZlÏ3£Q[¾#ÑóHÿ¼ñ&²/8Ò8òU†"úŸ_"æs‘üx¢òk`‹¸XlÝèb³5ÏεÚjæVl+˜[Œ¹Hl‹¹H[í#ºýé9ŒO>c*¸@âÞ{ïm÷ÞKݽôÂø|ƒ;Ž¢Ô†¥-·zÎ.UøçÖl.ÅȾƙâf{wß]oý¨4Õ½Vƒµ}Pc’‹ü•üZ[Lƒô˜,EׯùkóDa El#‚"ŠžÖZŒ­âOYM…¼!ä,á‚¿4¡M"®® –Ë€l¿¸º‚(m9FׯŸ†Á«<™4»¡Âq4µayÓ`Þ-Ek1Ö¢ö* ®`åæóc‡§*I vd1ÔÃlt|í´W$sm†¢½³äÚÞ"z¾£9-ü5æ⯀¹ø%ðÇ\*‚ *!ùÿ'¥E¿Æ¼ƒÍ8ªpdùÆeç™ø¦€6–˃±,8l·:è:…'&Žká˜Ls\&«-¶œš8®…lŒ¾úâ¬0ÊG!lL>IçƒÌI +¶ «’É8ãc“½è*|ØzNZ%c[2Ƈ­Ù"e³±ÖZ„±97!„lRÆæ„tVö ¬o2ù0:g”Ò‡Í'd«½æèÃÞ|Ö‡­è&œ¾ùh­ÔIZ›d1׬lž8꘣ÎÍW#œ{Å©íFÃdo2éꔫoÆ*£®àÑØ„qB åxÐEV+k22ëÓ}n>Èú¾X“ˆ‹‡ÃN ²1×êÃV¥,NXŸ‡ÃNpT˜ÐÜ»Å÷þÙZDúÁR)’…ˆÛHÛ^A )Ðse¥w@ÀÍWÙc‘6¶¦£2ü&T\JÁxË4]«’J6ÙroÊÈ&…ÖÉÞŒ°N¦5e70‰P€Æ†Ó9(_sÆH¥\”^PÀ‹&,óyÒà +œè•©/@A¨HhT‚19ƒO>ìÑ §k-Îù°5el¢ iP1iÌ…Þ¸W÷5 H¤?OÚb™ Ö'a”³Qø*«OÎGs.ÊHÝ„2GEÎ"ªÐ¿yxÊ€œ1DÇU¤wCçÖ²‘µ"¦4%ï=,æp°˱у ýº*ÉÃá`Eñ}ÿ¢ïÅ+²s8XÅÐ3/IÎoðÄzpÑôxë®·ÄÃá`e Y ÓdŸG[ŸÙ¼W.¦ì$sm¯dS8°4¶˜†‡ãÁŠt‘@ÖklÈbJÛP‚B„XzëÑžð娃.B«­eã‹QR+Âü²6®~n'J[ÞW¥H¨ç“f7Püûk,·IFBSEø‹¶˜†þ%²K?A+g»p×vñ—–l ÖTÀü;e/Öî•dQ$OÑ´,Øé±(œmß•¡¬†ç}ók£ãl«ÖEãU)øš*Bç’®ñ ýb‡9á{gˆ)§{–óˆ(ý•«é/²…vŽˆÓÆÈè˜ ¾ˆþó$ÒlvÐÅ:¥oí2I2Q‡Ê¿õ:²Þ¯‘uF9‰,äžseL::+´ñJ/#eô9ÒŒªEt HZ‡IзIæš{š³f›éjsg_vvÎUW%«Ò'Ág/ßtÚüê8‰B‡Å'Ú¤¤MÞ檣²µ}Ùù±ö }QJY! +ãWÇ>Z‰=tX¬ÕÒ”‘A*£³±’£Ð©ö2šRM9R¢ÕyòBçÕ 9/¥Œädîb9¡³(¥•>IÚ +Eç^jft.ƒ’Ÿ$¿ÊèlÑSËä|Ç™ÛN=2ÜR0G¡³uüsuÑc‹æ@1À€ˆÛ u.‰$Ê`uõAÔžU'Æ +È:2ª.Ö=, z㎩mñX–ÇÅÆȱ˜}.™6o–‡ +…yE—~B³{ßÐƆÓÈö/ VXe»87 +Õ0Ô¿ÂíƲ𙻳ÍîTu- ŠÛ…Ò<6(5¶[‡Ï“ÆR6VIJоò²˜ÛM³ÝF¶¿Æ²P- –…€G‹!úÏ“»à4YŽap°p"a—§*´(XîP¡H–kÙÞ +ߘ«-sŒ²8KîZ²(’%W§ðÄÊhJ„±ÖœkŒ9wu%õ=QÏ{ðIÏËh¼Ýdyk̹\â—²À x`ƒ $È 0x°ÖÞ{s ²g—ÑصëtÎ=°½×Úc¬=¹ç=, {šc¯¹Ö¥?z˜|Ï·gû<þ½ïã64—ÂOËhüt*g4†@ØKü-b£H(L·“å¢ñfS|Æ “Õnš$9W_ÙøŒ®( ©pô<.Ö„sêX<¬Ö—Æk눌ŠÆ›ì„ˆŒ +¾Ï-¤‹‰Ý+IDFÃ!"£r÷D×""£Ò);aY€¬È´-Ö_luÑvöjêUŪÉ[ê)V¥HÚêü¸èŠ¢à‚,U’õüsï˜ÇÆÝ^<U½ïWÚœ«MyÑCam3øw›ŸE‡âBã#M™6F9ƒl®ö`¯té'¨®1Ÿøoö´ñåùÒø86"L@(&$$ +ƒ P ƒá`0†Æ¡ chØÍàßf$aÂÒ“aGüâöƒÊ_6À{.>êã$ªÏ¬^·±Ô§íCþ#DÌä$`Eï"qÕÙÑ$#JSª×hF3¸ U ì?2ÛbëŒCÅiäûŽŽ‚ÆgnôÙÁ\óO–"Õ|€³Ë¬ÏÇ{?ð}‰qRZ—dz«Ô®êá“ªå ¥0‹Jf沩YgôÁéjÜþ·ºÄb9~´B܆ýᢩ‚B„LDD3TûÁP>fÓᤞ/fÇóosÙ6—™ÞpÍÚ’Ó¥å©JU™¾.î…¼úÅŸbµ¢Ž†BÄ9g“¬Üÿ‘»Ã8ª ÕvÁe‚ªáo†RåǤ|€QZjAÁ˺ +ØR“ÆI³bŠlìŽÑçP˜e ȺU×z ‘~:áÃ:4u²Ú¢ÙŽñKó¡©¥˜ Ï¾ÿb×ðˆ›½Læ€aŠ„[‚ÑG:°Œ„(UÓ/ŒÞŒ'†ì!óõWÓmt˜Ï#•21À¹uU^¶‰yò%]†+kQ‰w†°ãû¯¡bó~"pÚm¦W%ÁíÌui„”úª3³˜ÇN› 5¨Ÿ¨@zÍå…£iÖõwîÌ&üàµ`ýÎ?ü6T+Þ -ÌÞGÌü]ìÞ/jœ³ÒáêÏ›ÞÓ\€žfXÍ_’¼œf;R Ã3±"ð‡4a…8‡Šís³áäÖ‚=Ó¾ÎY\—oüeÐÈÖ+à?M/§šÖ‰ö²MÛ![i.!óã•‘òÙÄÏçà©r&*TDEõ:îP•Çºôä2žlYÏëàšB• fá¼@gcx°—’EW]‹’a¦6!Gu™p¸8{ŽÛšè7³œÅàê`-BêÒÀ< â¶D[š\bç25ˆ³»÷w™ U£^g %ym*Ä=¾$yäjd’«yçæ„=©à˜â|8q=®/E› ¢Ò^€l ¨,oûŽz`céc-Ý„´ÒåYM…E©‘/¥†ößk—}ÅŽäOö +ÂÏ¡—«~*|d´ &Ü4yb$!Åü/¦“Õï†6 <”¶öHô‹²€ß®í5ƒ²F¼Ü_![¾Žc†LÎEb…ôIiÔˆ¹“…ö0§ý_ù²ð¾FûéY¼7?0NxRô[‹Œ.“<ý‘¤õPá8(¹¯s2Ê]jÐS£ª=ÿ ºJFôk¶l£éM°úr©eÞŽ×fµ'#3'.l©¼u„¢ïû'×?j]}E²xµ<šëg{EÈlQ9«ogTš²=½gßj ) ž2ô^Ž3•BGÖêò… ‰±ìÀßLô3ºG¤x |X/v×øK€& 85¾zuóŸL¿·JÆ À.Á8ëšëïfDx–0äØ0àYìŠEý‡…±ÑjÊÊîçÙåMeECÝÄëø‡D.€æ›eþ@ HgëÅ«âH¬SÙÔÎ+†N’†Æié^aeºº‚``øE'É“)­ŽºÑD2Þ£Ðzâ#-bÜ£IÒÉJú“ô…O1dF¿¾ÃB$½(F·9g R8!’:Þ£“«ÅÀРÚ/ðä‘fç•ù8Y¹ß¼† ¬höÚÁy’½OûgDn_ðãXÿo.–]Ï\W¶‡”1ãAhÔ_Lç‚f cûm¸‘زµ-ÑË¡î>]sw7ô>+¾s$1“úRcêö†ûº aºèO MÒQ°*“6/¼ú§ä€¬– 4f¡â Ìª$Á¹S›.y‰­  ?o~oGø´é‹R¾·ŸK¡JùÊ£µöÂ)[…º¼_ØŠs ‹ Må )HMˆKXà +_¯fDÖuTîËßým’kFب\'†ù…3õMQ懬r ~†…îÊ’iÀ`b¿ê&C"ú½4É›HÚ,Ã%gÒoBvV†€W@‘°´Î{ fR«á2/ÁnY"³06L1 F¬~µ³8 eÿãEð1«n Y>>ÙÄ`{ñˆî¯ pb¡V«-Ê™¥Õužq«¶db{×ÉL×…¼ÁÒHJ°Ù¨#œ¸÷”g +›æ0¥?SÞƒNX«`¦`ñ³ª´â—"û`=)~3Êø½Ee±õõÛÚ¦ì-û¬Ïˆñkbyk߀~?š©Ò+>˜°¡ƒËÓئX©á¿ÚñT39ÏQÌÊ<òÂUãü¬×9Ý|i§·+sè©æžÞHS’Þ:nønô¶FmżE[¬UG7ÀtûÉh­>3åôVÙ3G½uªžÖæÿ؇{<îo +f.'àþa émÐî,ô6äim&îÕ&WHšþÒtkßa¦Ÿt+‰ jNàØ[…WÉÃ@È£ Öãµ3Õóìƒ+£wÛBLj¸»5„nS“ÛlV¨$+Þ2­šô°FÞ—› \uÃI¯‹R·Hвj]zaeÊÉn%­HmM¹™†ÔŒÌäæú‹ ¤°±‹™&×7w]¿VÑ´üçpóz”Ôháæ¿2ihã4ÆE=]5DˆO|¹:ÃÍ+y"®íTl°uÈf"ºËº ˜‹Ëe‡ù€:þG¨£ø»[#ÀüÑX[»çftØâ;ÿOÙ[ýT@€K#M&KšËì¾à7f½,é¾% twб–Ù?X!a쥸Š¼ ƒý`½³UÆ?‚‹D¾ä‡+b5Ô¸ H®ÝöΙ=:ÄM*!C(5ÚÊ2ùLX—Yúˆfº¦%ïŠ2’*W]–‘|Gà´l…I<Œ#þc:±¶PX>ÿ\Úô°`BK :¿™ÓYB°‚M¾ÃL¾|‰bØhÝ9Ü™¥ä"³“­{<£}ÆovaL¶±‡õ’.W#¤\¦é—Øó òþ + m€çš½ê®XÜiO¸ÈïÃFŸÂ­Ø\}by¢êÏN+ПHTý+÷Š8í«yp+ÙX»¶hžðHQÎ+ ØB$ï¼Ø3öÕp1(âòºzù=guÉ ž³ÝUÑ'/ÇclÒ埦æ–%Ã<Õ›¯›B×–s‡zgòÿ­UÅ}'¡Òb_­ÈûÞytf÷á²%ܽÿ« 7]Q!i® +Éyy+Dý>9‹°¢üe{ŒâÍ…wP ôEÉ·è¯|R'²bCVk¤¦xUá±€äQóFéÚ¹óSÝ)C´)_ºÁòRhʵ 9¶]}IEÝY víeÐh÷ÈÀdd´–p“;Ž_4ã1/Òüþg€9: +ÅÁi##Íj´%,ˆ>|’pŒ¤âéFÉã–¯BÂÄ’´[¤¯Êmäpv7£¤7&² mÚÆž]lθ®…rX¸ÿL±W6Š¤ÊSáLª¦ÓŸØ û…Я•-Ÿ•~šõÁgW-ÇšŠY<’{0Y1kþl¥³ Ó0VÒÿÅd³p™®C=Ø œâš{—!ˆW‡™æ²Î1¦“Hº/K;ïzƒ¬Djí¨|¿é…õXÇã§Ø(5,S()ù‡è¯†ò8škÑôÄ qÒòKÛæ+Ï.Âc °ˆñ|`ؽ>Æä—”µa ;4"ß~›ê†X›,`ÏótHÓ˜Ù½{/öP'„”#ƒ&ˆ¾qÔOôtHk*ƒI +X ¯ô'ÅŽ@ÛoÕûÀGöŠn»}.%Ñ Ôà‘£i+N ÚàÝy+5‘ÑÌ ãTÑØÊl©‘ ¡„3ºŽMÈâ×¢ù7Ú\r?‹‚†J›ü¦¡ …ãa“Yü[4ŸÑÁÀü€v=Våõã©Å1›éà3’Aã>¸^¯ÛÏ!­‡o¶E©$”dÃ1D¼¢(Ý;,ÈôKÃ>ÅøSÅ ­*øÕP Ú6€RФO¬Y´~ñ:GÍA= +iÆÁF( ÐýŒÊ…Ð×À ƒq>„ >«#…Tïí)ê/…èþ¢~BEˆ Åq0Þ­BË3òGsÓÄXðÉ{ò6DmØr³ñ£œ€­´½ï,ÁE³G&NM·¯z*¼5[¬ù —ûBwE7 `\¢­âùêÀ•¸9†`Ú~²„f:÷(“1µ¿Þ2¶sÍQ*XÉö¡¡´ úîrÁèu&FÄ-‹QðÜ—À@h!"BŸ–10³í@_Êf ·K¾pD¾È> ù„¢Ã‘‚è‹Ynû©xœÞ[Ãâ"&`æA›Ð/8 3KmHïãM9 ´`6Úwé"fþtБ±IXüY´cð¥ÅÜ > ΓŽñ_ä\OÙÆK*ã^-œ#é„@_Yýx•'ˆ Ë4Nˆ¥…¸²Ohw†Ù 8tSgÔý4.PÜ?Ђ#±9ͬQ_¿³ìÓSqw̾Zç!¿,„ÒV\ƒ¾uiEÃMA ÇûØ úÁö€;DÚÄ]jaØ.»º«‹TÎ`^!w{EBÉ hÅ:pžêൠì&QÉò­¶`=:+I¦4bIí3°àÞØ'= ’ýe>mT¾L)Q„YpœÃJ¾2›ñ ý]n˜Æºõ<Ê+ï4‹Pô¯¢.éƒ9b‰:ö+†§w*uõ—0lJøäGPl;½+e0ªf%þ…c`CG©Êˆ~ÎázÙý¨ÂˆyŸòŒÆ!)‚cÓ×Õk1œ·!×ø ”ì)hÅ–ˆ’—‡ô'uFÿ¾®ïðÙ?2ZkG´/~?l“¦á®_ž±YYÇK%9N²ñêÒ–‡w•Îè÷b,Ä\äÓmÓv 4c„/­ÒeÜÔ¹k# ¹í7âf[Q ym¾$§€¾ pÆ-ÁªY”ÁB >>ñ[ÊuTšçYä[:ïÉð\dy| ãÅêÑ +k»åb@_hšs¥v6<—æùºøÓµ×1 Éš;“ªÞÀ*º™ÝnD¥¼L3UÖìI®‚,¡R±RÃt@”¬x‡%¤áóúN”3Õw_‚,÷ö:µö¡ …žWï&“ëBuµ.Õ¾:(ËÀðNˆó¾B ºR8p(ÍYÐÉÌ„äNÓïwò¼ +'Õ0 }ˆ‘K‰i>Å^4)º«”‘’V yà“cF[À„’<‘~·åµNï1v{1…#˜õ «Ê@rVЧ0ÆÙ^ ÏšWHUÅXB]›ó½…ºpv1û¦R¦®ã”“æÄîÙy©PtüŠÙcÅ{.µ®þzeäh ç¨ThQüÖªUBø‡ÃbM@ô…#XðTª¥¡ŽÇëÝ«Èû¨æ‹GÜ‚fú*½è “Øóâ*lÒ’ “!ÙC>嬸¬m‘A†`Æ\­ôpÒC}jo?›[Ðë§Áò¤ b9€ÇåÉÊ5¯çŸúŽõÁfФ;"¢eðÈÒÂ[ìvÁô¿OOÔ†gÇmo'I„aŽøÛ¸i4)¥”2¥”¦†±OÒ?†|clpaÝf \£XÐpJ” 'YF=³X@€´ŠÚ¨!,(+ÏgR"=ζBÅOü€ðÇÇ}P§Lü€ðWK2'#á…+U „3N—ZƒŸO„†= 5BaH* $öoÄƆKø›‹g3 ï’R¹*,3Lç]l~2¡Ù<Ðúhš‹ÍW&4ÊÁw±ù¾YlÞ!æ I.B‰C;Ä,í@‰„‡vpˆEWCx ?S'Šjs³À„_[BH!¤JCœE|#U? ƒ¢aPaÈ#”q„š†A…¡ *üGƒ’aP>ùŒbD#!ŸQL ’R'¡)¦ÚÔŸS¥£Iø`þ<ÈPRË ¸è"Âxˆ°$«q01¢#[È õŠÞ5-<ˆ¢JdÐq‘°å"2m`|Ÿ¦Ëd!$®*ôBã`ô4‘Õq¡¨´5%µÓµñÑ„$K±‰°•ƒ·D'ÓèÛ€è÷1c¨pp€2@ϧG@ )Z¨ä¹œ + ‘¨‚l€TÒ”iJD:L÷ëe“AX˜8#`hÕ³žA€¶TÇ'ÆÁ‘r“„¬å¶W¨5p„Úc[ñ¶êvòøgääñ +c[>6“Ç3¨“Ç+'jÑÔRµT-eÑ€pŒBÇȃ‚qúT@* LR¡¡hŽPBÈò8…NB.N”›‹Gl.±¹f£Ïevºz'‹Ó膗_>HœÁ|—{\‚åòAâÊÅ1Óè+N %©‹ÇQ.4°Ä¡7$÷Kzã³H‡˜‚EƒðïKpèÍárJȲi° ¡Á‚Ë-ÄÖá5eóÉÔÉã¤ËŠ!uÂpYàbReãmn¤Æp$Ræ½1*ÞµF®Q‰CÅovÄG­ÆÄPqU‹ Rª.ñIÉ@Õ3_…<¾Gô4 *äqÀÁj y„B4 *ü&fÑA †„brËŠáÎ(&ÙÇ•ˆhÉMYâPÐL0šîâ›@É”ÂËHv´âÓD„µ¹P²%â*Q,,f"óØG %9 ˆ),|±- +%‘“íÓØj732ø@ISA¼$¼:á±1ØœP²V+9Í& ^‚È„`)˜4Ö¶1Y€y´Š~ßèù|XÑóñ¸¸Ò¡êÆBô©Ü@NÈZˆ<8W*i€R* ØHD¤ +YuÊb»àÐ.h`fbú¾ÒŒÁM*:ߤó¤Pçc«YÆãd3tÔ)uòø‡«ñSzP@xÛjÚV£·­Fñ±Í<%­“ÇÁøñ¸Lü`0Tü-Óétú<®–Y4 µT-EÂá—1hŒAƒpdœƒaŠ†¢¡F4Ôƒ›`p„úc›y> ŽP“T@˜†ÑP£pâ›aŒ@‹ã߈í±}#¶Æ(¼¸8]œF7ätúóØ.#6'¸,pqtJ‹?·¥Å ;` ´øcÁPZ\ñ¸¿¤T®ÿKJ劙FaÅÉã*N§Ñ 'â‰?)•ë³Qiq%¥rñíaz›ÿÉòÀ]&4÷àUêÅæ)“ ÍÄfS¡$áQ Â1'¹_âЈ Íæó¸ÊC¿CÌÁà¡7àÈEø ./bëpÙ:B}eŒØ\Ü`Á¥¡²l> Þ­ã dÙ|ÒãB“Qø5Øfž¸²uøFü€0)Äãœó<ŽÄÙBŠÊ㥇Þ|$’“Ç`s›ˆœ<$[x«ÕZ-…Í0d£ðÅL#OÆPq„;jn8¢pØÜÂoÄÍ 0£éWá7ºm0TÜC¡²ÙnÔúÀ‹›‹=Žc[ÂÑÍ@Õ"è¤zY6Ÿh£/0é L”œ TÜ‹T נ˯¾™È ÊÃèIUÓ0(ÐIEbÊåãDRa›aŒÂ/D‰&×¢ <Œ ,06âeP˜&üÅãj ¡yŒnèq‡«áñŤaÑ€xÜ Ç(£ ²À“гw‘R¹8áÀ bR1…ß„ÇM„ÂOI‡7ð¦â†ŠWJîHÆŠázÞt`…Êã&JR$ö($6]Œn8Ê Âd›y>ó@.Ðã4†NBÏ 0^( ¿‰WUZ ÚÝÐaѲÐBŒæàz(Tœ +J‹? ™ÏW+…ßDÌÒáè$´#E¦Ä)äAr@e±K¬¥ñ¹xÜuYpd‘éàL&á…­V)‰ l' "Õâª`|`F,m"[ÊÃcô#øŠØãœá£¤†ºHØh#†@zÜS¸DlJ«Âa*d %Y)‡¦x\EˆˆÛ‘M%=nF»88 !¾ðeâGI-dÐIèËŠá@,€,Ôj%'+2 ^H’µ±ò¡×¶ZÆÄPqƒZŠpK3(@˜É‡„™ˆFÂo-ÁL,,ÁLP×!3ùŒ„ßáæÓ¶jÇ%|¸KÔ-²‘\ìÀœ0dmÕµ›ëâ|>£FÅâÇã2& ýðP¨d3üh ZH¡Å@ìÛj$„@˜ÔRóóQ&©¢QÐHôìÈ–òzú$2´*ƒ!; ; íòñ8I‹‡„e¤ãÛ˜ ’…ƒ"˜2J>!$$õƒ†rpÌ­&1£°`OH¤â^Œ + FJ$8"ÈØ‚õÑJYP”x†±Aâ”XVi-„¸F1…°CøeX34\ŸÄL£/T«Õ&”',€Np<†eÖíãÙÍK¥‹ÍSX8XxÉfz“‘¾¥Å¨jqU&ÞGI-Š.B!ž@9hnžB`d¿Íi!‡Òb +ˆ—„ZDXLè6Ó|gº,aÅk±š"I¸#².©‘h(-f-XƒãÖæq߈IT«M& `‚ÊÀrú…O$æqŸ„ìxxð†Ã¡ÓŒ@¬:Ø’ÀšXàjˆð`Àhðë@ÁÒÉð8 +F&c1±`Tn)¬x`pƒá²8 ¯cÔQ©âVòp©h°`¹!ä¨T¢¢6‹ñA£òP!“` éq+„uÄJ,7YIFH ò6”8Ô¢ŽPSTŒÌjÉ >5ªØh•Òâ + pÄãŒëq#v\‡×LÄ7ŠÞ‰ L "Þ@ɪQBrp@m`¤PXø<®ccc¹xýQR«QjÅf1X˜¡6f’äqßѱ=­È(K„áQ“غ @˜w"8DÇV£A€˜˜Ä÷²„Š‡ÈË:g[¸œ“ÜXˆ>JêHì­,>+×óàDÇ@„V€(šG9 i“¥¦wHJŸU'€.ÈÈ,CmæÅ ÅidtA@ž›Åæ&^3± âùo"›„ø@W›¯~Ìðó8LçjÍX.д ŸŠØi:î—EwC§Öé\²W©%Su0X§W3 Øe+‘Ín2™Li°Ñf!‘Z‰-Òà"·ÙŒUsµT"¶h£¹n²WŒ±¼V‹´°m´-Æ8€À&N‚œ @(€‚(P@ +,%-Ú,ÒmµVi/+ÒcÝ\¶h£Ñ°¨ÀP°‚@x€ +2`\à+¨@T @vSÁ@¢¦zÝdªH +Úh3mUb‹7  ¦’½VÑ‹6¬o2¶ÔT1UˆKm´ÚŠA@f.Ù âj½\!*×X·×m5³À[ÁV*™ ·ØªÑT°š q$B›Ñl5 +À!µYlÕb·×ÊÆ«™5˜«5‹µh´&]0U+®fDØÍÖ¢ÉX·š v³Á¢+D{‰Äb »Ùš¶bF‹5Ío½É\¯Úlµ™í‰­Ë{­fàÌÕza€+WF7‹5+¶j¬Y£Ñ +@Ô@ðp *P0 +¬€0  T@x€ +,0Ë[5V¬Ñh¬ˆ¬a5sèl.[ÍW-®f¨`+ÚkÄæ +QÁ`3V\Í,€ÁT«™µ¸šYPa +±Š6¨ð`€/Ò3 +› F{Ý`%.¨*:–ÏM2Y:w½hªOˆìu{µB#5DÍ%UmÔ@âeá²]¸­Æ’5¸ ö²˜þyÝd®VCK6ûÜT«YÕéÙ‹b¤6»àVëÄf5mWlVaÍd3ˆlf’½n6h&›AH †½T²U¬DÄÂuSÕ\2×ä&k°ÌVÙ3Tµ‘ûëA6{exd 6cmX:⢩© b¯šEÓ^5–ÍŠ7Û«»Édª×JV2Âr]0[ˆ¬ÄòºÁFP‚–ÌÕÕ\-™ë&ÂA bÌu{¹V5•kÕÉB^6HÖÐEOй^t±˜ª2«Ñn%3¨J]Ì%{¹Z³Nöêj®J@³u2×&Ô¹l®W«s½*:™«%s]Psatqdʈ@¦ÎSu/×MÊÔ\²—«“Õ\"¬—‹VÑÅ^®U's…ÈJ`0×Í&{¹:׫յd/[gs½@–™ˆ«të…±reÜl*Ñ DÖà +Q™l5•Gö*5&¡¶°H¹Çýë~Ó‚~`ˆJCÊ))HºX9pÂÄAøÍÕ*ü&Ê@ÕT‚ÄêÉHøMŽ)"]|”°©˜(È9-Ú¨«ç)BhH¹å0PµÈ6r‰›‹ BRÅ‚êÉÈ.ƒN#!L_D*˜)4—ÓŸ‹{o$F\ì!ýÀŠueá d˜/'Fqä"|Á#u†,˜ö8ŽÄÓ—Žª;ÐVR¬\ÊŒœ2.×ó!ÅÊÅ4âÕyRƒÉÅÑbd1H0&âì$´†Ì\ÜD[½@ã‰QøIÔ¬çA™‹_.°CÇBÈK¶ ÈçÅ7_ÍòÀ §§,ÝpdÆB™46.)‘ÆÆ'¡¥ÇyœÇyœÇuxœí2¦‹F¤Cžå!¼!:ÖÊ°úsò°x­Bz<4˜Î¹Üâqçqçq£çF")ºÿážÓgÕŠ0<˜uX]¢ŠÐpj•Z©%B!ʳð8Š +‹ð¸ËÂEŽسbq‰ÁPqŽ‚ªc3¼ÑX]KŒpB£¶H|"Q, E:™(A[)÷EÇãÀ +Åó‡…›P£š•‹gì²Å€‰Dû<îƒÂøM\.&äUÀ\vÌð“!”ïŽ~– TøqÇ ?–¸P~%5,h)¸ÆéòAQ’ò,åQc†_äh¤|fÌð›!žR]Bî±Qâ0c <®[LÏ LøELÄ.1±@ùLIä$K1º¡¬¤¡°Q®È‚¤£ + 4> ó~”Ö +60X#ó8ÌWÂôg¹ÕPJ‹7ÐFí±•@˜V13y\*%ÊlXmùFN ¿@r#t½Bƒ_,H¼:Ø&å6‰0œ8Ј´)Áåö& ÆÉdfÉmrÂ;FáW)í&bëðNfò¸ +‡E‡e‰:,>„óPtbß¡Í ÊË §<Ø1-áF@þþᬡÁJ¹Æ ?S¹üŒ~³ŒÎ˜áGåÊÅ|Z«ŒÄJ%U)ØÅÝ¢O([ W…sK^ÒxQ¼pÊ;x ^ ÜDtž30!ˆ†EG׃+Ò€|”€.Âåã“Œ€¬Ú‚F˲­ÂZÄÀPñŠIÃhã3Ñì°—êû ˜paää%L ×$ TmKn“vÅð=®‘)Å1Ñ%q1Ã5´Q&‚=F¥Q_"D2`CØ‘ù„1‘ +“@ÑüLk'W&ÈW©ÓÒ•8o©~Oƒñ¸ Ðf‚ƒQAr9Hâ 4…$LÌÅž„Pç=î!ÕIíarj*zËx$îq«o¬fz˜ÈoœA€"L—,­å›Vgt>Ií2Qu.KYÐ*ÛÈëâ²ÂÒ %N˜I‰F‚™œZ)ÌD&lX&×¢a³føÑ(,ƒVøyÉŠ£„du“­FVš‰kE[­*D0*›hx” N“š†‡ ÞFN6”† uâ Y¡NçAK¡JFn"µÕ %ØÀN7—¬‚‚Ô!â˜q X(ÇP5SˆšÌf$Ÿ B‚Ë”2yœÃT"ÒAÂê88qœ(69™”x­v£(ál <µZœMN¤hpmÃ6>bA¥1â$òã¥ñ¹xÜêk . »ÄG$ê{ÜÌ4CÑÇê bi>\<—"¦°Ð1’ªæp†ha®YH*0áÇ` 9Bý‘0á— 9Bí˜ð»T*$‰B*™X9¸åÀ浚­ô]Ø<”º#†£¡b³ðÕj5Ìk18 \lÈ0óUøÀ•Õ!B¦,±8GkXAƒy¯Œ#ìz¾E³õcF%‡Œ—éE¤Gæ‡ÅG`4P"Ö‚èÔ@ˆ¶?Ñ-%Ûç30Tø9Ü…Îk @ @J4¹@-OB/ôÁ ,iD|øBGå=Ž§s@ +›Ê½¸É’\p,.:"}@‚råD€ 4Úªk$e&!79PÔŽ‡H‰á£$Ç ¿°uÂ5Ô ¿Uˆ‡üŽ0T\TZ¹Ø –ò¸¹ñ8ªàq 1KÍÅ«Kž÷¸Gq„zTZ¹Ø“ÐòðN,„|Á#òé—͇«užTÙ¸øa¨¸§´r±CƇ{ܦBñ|ÉÔ |¸ ”§·òÆò~AÁ7ßD Iщ“I@}ŸÀ ^5#.a+ÒÈC¯t¨x™ž0dt4Ÿ01Ãï)6¤eH-’À<gêäñ†È´U_>£Ë J„L,HºyXMæRèq­ÎÈLJ„QÃ|˜áûóà}0ðð!cL“„·ðCI3ü4¢Ç¨#ÉExi†cœ<Î!Íð -@ uU‰ÓCÃàÙIè—(ƒ˜°v@’0ñ¸ÒHøM0*`fR’°oâúNfò±™ÉÌ‚V™¤063! 0“fr²@3)uPP0|_º“§P5x‡„uú^òäpäÈÅÖÒzœ¬¢c„ÓPÓh8- !üÀ~ +VWÛ d£x/Ê[&Fá7;føðé¡#O›Ž…ÍÁH1 ú!·èÀêxÐé$4¸q[(9eâ4º¡Yˆ†² A ~öcŠ.6¿š3ü,„‡D2ds¡áñ•«F>*K‡#ÔÛIè¨:^Œ€ ó2$ž!+o±‹ð %ŽjYh!é5<ŽI¨`¨8Ã@Õ˜ ˆ#ÔŠȱHi±ª´ò8 cóoñ:±.î‘°áñ[r›Ìu,:´‡*òùP \t>† Ê  +d³æ‘Q‘ÈÅÃ¥`ßz>J ú“Ð_ +äKD¸x”YlþdÙÖ²ux¯˜Â²íÄPñX2\’i0af'¡¿éÞT$N8ø ±_Œ@®‰¬Â¯#fø½(Cjæ Úã`%¢ð‹-‚‰XY."fø%xFý¡a:õ÷¸( +K›Šc8¡­4‹u4¡ÆbiqGFÆC‡tÂ}–‡~µIIÂña{ظ¤D qÙ:2œ 2 CÅ?ÍyÆáõEN+ÑàbóñàƒÄK̨@Ž#'/É+$sI€Ü êõYÐx„º¡d•xÐg9ø qSXaèCy¼C KžÒÇ«ã`AIóð'¢¤ŽˆbÞO‚EIP ä`x2BÒgM¥n¾TK¤s‘M^‘xù¸àØn.s<<0ͱ`Xâ"rÁiÀ`b +Æ%rªb„x5I‰@Þˆ° _ˆ$Tø&·ô1!qºÈZíFaS%µ/Q«]<>˜¤„1Xj&Fìq¥×LÄ ‰k2„Ø£)|åÉLJˆ`&6›ÅÉG¥riŽï’p,àE:ªQø‰eX¶úI"Dß{œ…ß[*·ôQaÆa«„Blp-.¦Õ´­¨Ç­!ÃÚj–ûQ«y…ŽØ"bσGÄœÊ/|$!>áx|q‚Qaqj\3¹q RrihØñèÈò•MDÆ$‚Ê85¤¦Hd–kvZ€iF(, ,ÉK'Ãã@\ ’á²É ­ÍÅ…çCŽJsR‹ñ$‚°,gÝ@L +  +IÁNóQBrð-Ç„zJH:!$öx*—XÆ’p1q;`¡ÈA¤ö’¶Á=n"³pl@ˆØø&"¶“M¤ecpyå°zvr˜Èƒ| …¬FA‘Ù`)Ç‘øþËÌL0ïCÄjÏÆitCæ|*n[ÙVµÔ¨–:0Tüs ÂPñÏŠ¡âŸ“Ń©¥Faí‚¡âŸÊ'Áe êAƒp4“pŒ*NRñ8 I„i( ŒÆéb†1Ã}²Š‘Ë»,p±Åe‹c¦QÌ4â*NOóAâü qJåª8]>¼‹Í?Ð~2¡y˜Ðlþöp0¡ÙL¼‹ÍßLšÍç0I®ÉEx‡Xkþ¡ß!f Ax®áª|·[‡74X™©“ÇßmaêD"õÉô &›[x ?# o£Ñºà%Vø: ]1…S'¡)&ÐF£˜Â/æà¤Jj ×D«$Ó˜6¨¥H”‘f²pA8&!¶š†Gª8â‘:DÌ!" +%i œ‘qSø(8v²@²ªFs2ò8 Ô#⌇Ȁã"G(VÚ ¡bcÐd-“…‘CøÕ‘È3õ`j¥0Ú±H˜X´R˜I…fâq ̤&·Œ±áMp ¾XQòœó²¥õ²•µ2[ë6~¦ûéõk¼õ¥•ÏÌqög:§·ëdÖÑŸ“?Ã’ilKÝz|Ÿ·¶ý·Þ•ýr¥.kK—ömw´^K+í–²ÿÖ—Ô]¶{”VÖI­¼’¥ŒÒ6Çê~2³Ï9¯œ\©mZ¯å]?Óy[ê¤uZ·‘ëgæ³ý¶?å[®×úuŽÕÑËn%•óo|¦ü¶ò|9é¼_z¦»þSz'ÿÊ~§.ûNéíÌÒ¦ß7v»óû­|ow¥ñåwÒÖ®,¶;[É^£”ßI¾N©­ü´Jok[Fúžéjód·×þs¬îR¶~ç|ÉL»Öé•ÑûÒ–÷R·5Êvþ{)³ÏvJe”’^jŸv·gºêõ:½²ý¹RÉõÞLW²tËé#5U«ó[ù¯¥Þ½•’ç´Ñe¦{jëmnùLãËLgû»cu,ù;Ó¹×Y»›öÊžN­ÛHkw²ZJ%3³Wwi]öœ,ùV—í·©.mÏÙ—û¿{;ùÞ»;Ó=óüï*KùéºÎ*镲6wg.ýø=_RÛl]Vêu²d¾Oݽ§dK-•,Ûv×í¶iw_f:ùÊnj¥¬SºµUÊ[+Ï(™Îêÿ?Ùg¤Þݦ7NïìœrÎ[íåëÎÁº¿R2µ³ò2VçXÝ×ËÔþíÚ]O–U2¥Óûã¬ÝÉÙ´ÞngßÕRYß6GZç·uZ­×ÉRÊù”vÓ¥w´¶”2ÓyG:ƒuµ#}™éìÏyûÆ9cu¶íœóV—uöÛy£OÉÔJZÛ»ûíßÉô/GŸžñY[~ÏJ]Þ§ÎÓ¥µ,»ÙLoË8©½,»i§Wÿés²ä`­mŸ«œÖÖ(Yr¬nZy«uyëËxÙ¿½£ì¶ßZÉžéZº¥’FÛÞ½åyýFË.o¥sÚvÒYgs[Zm[¶ÿ’]fºú>}ú¬meívï–ßÕÆK»»µ¿«»WëÒzµ×^K›ÚI)ýkÛNnÉ´»{y™R +³]éG¯Í±º[™k{ÎÔïíJãœÝ”]-eŸ,©­³§½ô[N99XGgÏûo)ß)í¯òþœ«k{ÝÝ6ßø´»ï|ïí(þüö¯õ£¤3¾ü¾¶›Úxåg:ú“VjYÒëRR~®”í{¥Ý‘¿»®“Ú·sÒ[ŸN~ÙtÞê‘çgº¯UöeËm=ö[y½=¶¤tRzå|þv—Ó§ÔÞÛÏ-¥åØÒ3ݵ÷Zö··víkoóäë•«wµ©´ÝîÞß?Óùtï{ÿ^÷§Òéܱ¯s°®2•”F÷Ït“o½.¯_K#_çXd§÷­¥òmS9Û­[¿½s§Ò¿zÛ–&©•Õ=Ó9ËË|%mçXÝ}~Io˯ö_rSîwÚ™Î-KÚ·k7%eû–ÛÆÙÏÁºY­ÛÎtÝ.ûo”µé´Ö›Ö˱Rú²ºOö®ÎY«íXoß¾²JöNN{-SéϱÞÎtsN+ݲdɳFz»¯µw2Ë(ŸÚ9»Æk3ô{iÏ(b%,VÇã‘–ÒŽl¡=RSµXeiå¬ÞËçéóãÏLç¶ëŒ~yÊ®þtRI™FŸ•6{¦sZe·wµUÖöÙw2ßîž/×I›Òæ`möLw%åIŸ)mŽÕÑ*ëýóv½‘vÇ-Ÿ=ÓÉËuÖÚÜ—=~uo)ãä饶¿o­]«¬ÓÆ9»óÛ^=Ó=•ìó£Ç[}öSX×/ù=ÓÍÛß«³õi×÷Û–¯”ô©uyÝeSkéŒÞÝYžô3íË–ÞøݬëîzÙÖk?ÓQ¶SÎönŽUeµ\¥µó:õ+kôÛ¤tJÛ=ý¥OXw½Û=Óý÷ßæXÝlwžåüLwçüÉÑö[[%¦kiçSŽ·¿“í×ÊÛ--ÏËþ¬»=çüLGkuÛ”g?ÇêºÎ¶sö}Ït¶VévÒ§ÎWFvïnN{Öy©Ç~Ïtü÷ÚÙƒuíÏï™NÒÚîKJZiåj«ôŸ±çwöÖ[¯¬µ3]•^çwÕ+½ÒF*;ÓÙû÷m=ŸƒuÖk•éš/ÏçXóû¤ÕRj}Þù¶ÝÙ;û·úýîæŽ.eSY­”×+LNûv¦«´omŽ–‹u.ç·¬åÌtSÞ;›ûZo.Õ\°–LEÒh\4•H… ¯’£úTsÝd®ªÖR•LÀT¯ÛKÖðïÍÝLú×#¬ÌVòj©(j.YmöÑh\4XPh4.XˆLuc¹(4š— +¦€¬Ábk %®Ä\¬³2åq ·šjÞjwšÔpq u:æd¥îÂÊX¸U©ãŽgÇÝ­ÝœÞÝÚy×-Y(ÕÍ…hãRX‰ÓzX¸ƒj\:Vçy "ÒÅ=ž712cHÅ3UêÈ÷™8„¨>¤JêhDZHC³±½(B‡ÒâwÿpvøÇ}þ3¬‘üˆÎ‚`‚0Óš„KƒSøyبcZb£Â`> _.»€WY6õ“Ø(ᨰ<îSU*¤[êS¶'GQc@ªî Êg8B Y^£ŽétòD"ÛÇ•0mBƒG]‹“B„Ïza.6Ç°¹h694S…26ïq'A#ÁlFÂû¹ô¾ŽÄ«#«8€èØ&'”HðX]ÑtÔŽIäŠ^úL{•†ÏãèS(tžuºÑØÈGf ê{9ø 1؆„`¾Öw2“!L""ë›DL|‡ +˜™x‡sÁL@ B˜€dÄÂeB¹],¸PþY%¢ÇÈȼ# +Ù¤|D_ E é›DQÞÁÆbË‚GÂy’Årœ* òq™tT4¾IGä˜ÉjB–™Äl·JeõE‰Åä4ÔJ½Ah¹Ãåòê„räb’ +ð¶¢d:B‚LœŒÄ*ñÔ\ ƒ„ÃhâÕùæ\ÜoDç9*͇2¬oÂl8µÂ#><"ßäi&©Cš" Ih›•ÛôÞã(f ¿„$§&š`CÄå%@´/ubš‡V}qrE¯‘,¨¾ÖÐñ© Ä.žh{£ ²iœRßôÍ’†Â¦rÂñm,D7UÒP ˆ¨YÀ1u€ž¿xYR3H°2òqÁ¡uH|ïq " ¦G4ÂIèLÀ8 0ys¹j¢YKv¡Àa:°ãBØ<(F®ˆ~™è1jûx¶àâ Á†Ð±hˆ:yœrᆠŠæÃ(H–‡Æ‚®†ï=J „eúL2>¦Ç±h1C/zxœÇ‰>£V PÐIƒéð"§Ë{ÜÇU_R"0æ𔇄®X !úÑBÅÄ9@… (Ò4 å<Ì<.8ªÏå¦ÐÐ(©³IàLD’ +všƒTÂù ñÇã:"(ÿ9•V­`/›ï£êñå5”;|,åçÙ„(H±‹h¤‹kRª~ˆyŒbFñ|e Ü#az(ËÍ»ÜN'Ž0}ó-Ü:ÜŠHßÄB^K°”[:¾ù¨©“Ð 1 Ê?p«#&(žA>(ÿIè¼ÇÌH0FNÌña‡T¬C4!õ—ʨžßˆF ø¡¬æh0/pÒ >Üb¾Àî¨úS‚"] +‚ÇfΛ“ÓŸPåT—“0/ÐTz^¡ÒÐìq¨FKãI qͤ@8!~4Ú¨3%©{!¢Ll¡Ë$Äf£Ll”IEÌ\¼d!† GÀ:’Q‚3ö¼Œ3JmAÇc┬$ç!³qqš,4³¼w±ùxq1†„ =î+¡[W*ã2aU4¾Iøù(“Qd}Né‘8Á¹œ& ¾‘ b„ò %‘þpDçašÕ×7ƒÌÇãDHäícš÷IŒ˜'ÒmAAщ8Ј4ƒj“r’ +ðKøˆ4‡'”·¬D:“–Jô—3\Q tèø8,Ü@Ž«VEX0ïÇ¡”ÔIÕOFHbÕQ %Ô ^H¢Š)üd%¢Ȳù*qÆ(&-£˜b–ÙIè™É2ɨ?u:°ƒ¾ù*­”s(4 LG”c°B®pÑ •·éSÛN¹²·w|÷j©_þ*é¥Ôþ3uþ¶}¹Ö:'­ß²»›ÞôÝýi³µ—ùv¦«ÕR*›©¬=/íZëGËL?úË¿-OúOï³Ky}¾½ïQÎË7ʦ·J—•ýò3mþ)Ù»kÛéµôò¤^kµ´;ÉÌ“Ækg³tú,»Úùfºg:'sµt6û»[ò•–­wíèÏZÝùoýÛòkuînz›Ú)éÏf[k¶gwö«tÚ÷;ÓYúÍ>™Îîè´|ZiÏg9¥µ·Yz»´SÞæžÒ¯¥Ö:ÏæÝ©¼O=>ß;åKK­¼Õ¯¬\-³tZ%_))íè=ïõmµ4ζ?›Ò*å´ÏeOžµvµôÚ¯“éå—?洛k­÷úŒ·iwN)K–õºäù7¶ô–‘ÖJ«Þ>¯WûÌT¶¥•6ei-¥Ì³/õh+u+›£­Ö%e.eíþÉ-­µÞI—î[¶¥—RîØÒVVÚ¦/g¤/{¾¿s÷ï²òŒ´ÎÊÝÝJ%Ó¥õúÔV+k”?mmŽ5%¥—ëu}Ò¦SÒÙÎÇ;euþžtÒ*oýJiÏ{yÞë±o¦»öÛFji÷m;e½òiíj§ì¿³^Ú.½ò´]­Óëgºù—ký÷–uºÇÉ3Ò:gMçÛë}û¶ì+åìj¥~-»õž“›¶¬Ò¶ä¦Mÿ²·;§L}VêNý¿›_+K)w¦»õJy§·ËÊÍURÙMßÛVûü,iûäj¥½WVËîö½>×øv2•Ó»«_Ê”¾lowõʱڷÝÉÿKmÛîg+½ÚuÊ[}Vù¶Z¶Lk½‘›vw_RZùÙgì®uöôÊ5vÓæXóÊËÒelùÖÝgµ6ú¥µÚ]Êû}e•ÿÒî*KË%òRjií¶“òt®üQ^úÔ^;cÏZ©­—vÇžžéš:4^I»ó*y^IiµÒÝÖŸ´©g:¿Ìl¥µTJK­•Õ2•>ýº½Ý½,ktétNþ¶¯´”¯löÊ­´’ZZåSnËÒ­KY»ÞŽ”ç¤íïLãœ_ëw×8¯¥§¼3R®O-RRYgåêM›mϲNwJç¤7#]Êéq2ínÞ*¥ý—~ùÖkÝ^IßÒ²meë62»íZ¹Þo÷ie´L{RÚìþ-O¿ÓYƶsú•R¶^£ó¥óz7ç×îÚy)}jes0û?/Sjk½öm­ÔF~Zm×[™VËÿ/ë¼Vº¥í•Î*­ÿ?±Ÿ¶Öë¼]ý%[iYʶÞ/¹/Ó)›¯¥_£Oû/+µµ£Ë:ÛV;å•U¾ËI}Vû^'ß·NçW¾¶­wmyÿÎîxrwK[«äú–>•l=J§·Yzm{güJaôN:-»OÚµ¯½tz¥ÞÒR–óegíÏçZåüúÎn¯ŒÓîúÞ:/_Ù—¯ýéL]z{w­4ZzÛ£·”‘ÛiµZïæ¼³2[ooYgÏöîR~¯ó[úÍ.Ÿ#•’^;kGgÏtL¯”ͱ¸[ÞvŸ–Îî¨õk)mþygwҧן±Î·vºíJcßù¶ïs´ïÓú÷­µmWo÷ÛÒß¿²w¤rvgÙrÏÿ~¦›õ2±ÊIíýk9Zé/]þäž³kµ¶Úy§½µŸßg;ýûNå???g•’ÚŸuºœV²åX]ºÿüé?;;½+´>OîÙ_yÎêómw_¯Î”?o;_¿´Zú“R§öþ´ýUZYiWÚëÖø-gÇ¿µeý–µ3dykwÖÚZ¿+ËÎt“gOÚ|J—Òû2w­÷½/­²ú´Ò¯õZëÓhmg¾­¿Ï8%­~íìh­W9]JÚ\ìú­UÞ8e¦{;§½ÖÞ¦ñÞÙ4³ß—_)ó,u%Ù\¬³|›ÖéúÖîûm.šJÄæ¡—ï´òßïåJþOýÒë—/÷åb‘Ò+-f_{cmË•~J{§åbÖZÚP#­õråJ±Þ*£üJ¿ÖYí—îÓzi´¥J¿£”^©”‹q¤]›)>SFozeÛêαê”ñrdÿ8›Ö+™VÊ“+Å÷XW™zýŒŒô)÷‘q^¦Ý´ñÿ£;íæÒ9–åòi|§L§ÖãµrÞh›Z§\ìÖûq>å@ÏïÈz+U.6/Gû7ú•¨ëù'»œ\é¿ù^[ûJ®d=Ú*Ûr¥ÈVr%.F+•4Å’¾íf®¶ÙN{©KËü)‹½dåŒm›z”×#µ/íSY;öœÍöKŸ‹uÕåu)+$ueåXü5þd¿m¿›³zËn+¿ßmÿÿs¬*çõù]­×3Ýt[Ùg¼×cûõõ–ºJm}îÓUžþ¥õÌwµ¹­gþcϱêwtò­þ]÷ZŸrr¼<£”ÓFžKRZkœÓ'Ûé=ýçs¬ê”û£üŸil®ÔM—µþQҞ̑ÒKŸÞ,m¬Õû¹•öòGÙ÷¹~tgÿÊÿ\¬›SNÚ2Jû_’À¹:«n*Ð*Š[\ô†Ž¬ªún¿Õ®ŒW—*㪖̸¯T™UkªªªÕ–Î-. ‘›Ê"{É^ ²Ùì¸ïÄɸ[YjI¹Xwÿo]¿Nœ¦»Õ: j³[E\-Yƒ+¦ª‰f-Ù…ËUsšî‚S×\s²Ò­Yu³]´¬O)wí®_í¥Mcui¿ï¿ýµýýmõXÛßïd*ÙZ¯,?Φó¶¤wöeÛli¿Óþ8»Ê:?Òwv¯õÖ¯_ÿ›éüú¶¶Ó§”ή뜶½²×o®VÆi›m_æYŸz”.í¬üôïmÙ³ÿûïý®²V*¹ÿ¥´|ë=g÷ýjíu÷ëÜ.em¿ô§GKoíîí•\§}9¿Ÿzýh©ßõJÊþ³©äZgWý]V§}ùr¤¶;[é½ÕÙÞöH­ôŸÒJvI=RË×Þo{)åù´Y~½Ÿ½í³»GzÙ­ßÎMÙÝïu§“mßËÔÒ{ﻤ÷k´·»nié³öZzo3•µ£½Rvõ¶|§ó­ô»ù©O{Ûk䧴Ê(©wUξ2r?S}j™rK¯·ÊûQR¯¶Êë\'e[m­Ö¥d;ÙÖ))•Ïß—²d¦ò²{´ýl¥¥•§lv;g¬í^sö²uNû%õÊõºßi9ÞÚ}¶óÿ¯Wj£´Þ+£­rrÓçë3JI/_¿?éäÛµÎú”ùvs:ýë×ï/«·­vZÊSÎú”RêíÌÕÎî&ÝÔ›«ß;ã{K—-ãìúÞÕÊÿÙ´Ö¶•¶ìI½Ö¯L'•~§gše·Oéõí[*ïd[k–¥eimwþ”Þ9oõ)ã´þ’zäÓz¦“om½ó2mêþôru·í¼uÞîæmmìùïÝýMÝVÊ—»¶¬–ïõ½“üo]N¯N¹òs¿¥UJ·•íO[a­´ZëÏwrôê™®åóÚž¶%w½–­Sj§”}i­ýVvÓg•“¥uï÷v¶³#³½>«œL›=2ûô—Üò¥µrÊz/µó©õ¯ô”mÛR{ý{ú¼.¥´’9ÊÛ™®]Þ)åÓ+»R*ûvgé}[éµÓvRzÓŽÝÌüUZ+oœ–vÛn:çm.ÖIë×YÒ[;ÓÝ–´;ÞÚßQÛÎTJy'åûÍ]o´Ò»—_éÍt´ÎÊUÚ+åtûõ™Rj)åX»Zç[¯µÓvçÏÿÒÖY©íŽÎk­{œý—¶ü¾Ò:3?w­Oã´ÜVÞø¶™§å—/©í®”tþŒR¶­ßÑú³-eËÁ:;)•\™ë½–cu^k}û}{Ú[ùÒ(½{Î(½Î¶¶Úž<¨1Gº`Ž‚Œ!43$‚As( +Gä’Ép*ã€X&@:<$”ÆÑX$’Å0)Š‚0crH!EUd@À먋†ú#r>c³À»Y¤ñ10]Å%ec_x2EÑJìÍBqãfødž¯2_ÒZ 6Àšä&q UÌ8¡X†ymR䙓eT3_¢4=–xßqó1l­Ü\+­x%\O<ô¨"úÛdC˾~Râ±›wlRI÷*’•gœ¹¡1~¬ä‚$S3».¯²M·/Ö×DÍj3ÏD²¤$ÕAUzN¶v Ô@§ªÏ«Y~yÜ[•äADE<«‰ða3Öž†&˜HM°½bõ‘^eUÌ“•4M0(evÅY¸¦¢–©ä‘À: (gZUð£Wø”odáŸs&4;†…™‰£[¼Þâ÷ŸB(¼µâRµWBì#žtr('iU[àŠv;>V¬ÿÓŠß,‘sh¼ÍÀØpDgçG"3~"6š(õ䬬[n;åýe+.J\Cî›*ù¡¥E(ZÃ2ǽÕ8ŸÑ'P{pmC[†èÕ˜Ïx5 £ô•j2;Ë FJpr±™ãÕ  ¶9 ñø? ö¡@%Åtˆ\Ÿ (òŠ0L-_ún´…eþç×)r˜¼'lnò¡•} ¢Y^o`?óÁ¡.Y±ÑÒv6‹˜£ÔïŠR©÷Þ3_Vv !–÷ëOuðí +8+¤­2éS 0ÚV~ÕÓ0Ūç6«2iíe;o|¹k…tX§ÖHV£.X`Šò®“žTTº ·ƒÍm†`-÷ØÐX÷¸ŒÝ:7ÝEK‚ŸÓ (sŠ2¦ÊˆEd/C€»»gРv9vœ+È“ðbƒ1ÎÊšýÔº)‘,}¹r—òtÇmæ93iGè­˜[Í«Õî§÷‰HC†/É€ ¨d¨I2*lOÄYÖÒ$7¥Ë4†a+,;¿¹Y«ì¹Šõ± &ÀؚݲwÉlL7cžÈ¾2©†€s¯)¤lû{È]uIj Éç·ø©ÍÙoŸˆ2˜4ÃjHJņ(o˾:/„÷¢ Z0ù.ö¬Ö,ªœ»c´&­‡naÒr ±A´;ðØEÅœ±-A¯\½zÄÂhO'¹0j—ëÿ¿ÿo\ŠKÝr×, DznŠ—¦[Ýsžÿ÷á‘ÖÚï†9-Ž??ëB«1@žtÙö¿¡@2s@ì|áNä:P$íõ[1H8c}3‡ÙÔé6xi°ÑÔš›YŸ×Ûad=¢%Š%4š—adœ<^Þ]Í)fØ#k¼Bà¾^Zð5våDeùz*r—ˆÓ¢XE³ðtÒóXÖ¸Å-ç±µ†*Cêà24E€í£«eÿjU’ÛAž +åtKm8)(âÉ4GX>šî´„:a®ØÆî%²3üƒ  +8„×@Ü À˜ÄW†îÌû~È)[¡©~ØŒ=B87ÿ‹¼ª}Ò'’LǪ»¶¿¶³J#ŸšÊ9[‚Ê®Í.kïcÁÚn&/LÜ5îðúªÚôž>€<k/ÒÌ" p|4hä4Š7mïî!ãÕ(C!ÙU·óq}Òž‘ªd6pŽúôĆ¥ºÇôöË¡#ãØu$WÏê6‰Z±A¸0»ã´²˜áçG4ˉ¯¢Fxš?}ÿ²â3=å2zÈ@÷h˜ü"a!˜ã­E&$’í"ëÆ©4ñû·¡~nŠ•Í¨0¹œ[˜(i¥tÊÝšPxt‰¼ÃxÔ™S®ÃÝ€öþæ-1ä<ðÈó¦o&÷0Æ·~§ÄØÓN +ùˆÞ@Vó¤ßݽ†Z¯ŒÓ<ÛebZ}(„x’×6-X"k¦¼tŽpÅÈV¸÷ÛE¡¢|×èöõö%_Ö”B‹Ç‡NïÁ‡KÆ,Z|ÔÀ,7p÷¨6d·Ø¼9l•­ŸµÙCEë…Ð@õÛIZLø-’¥:ù*Á)j­t1KÆDR}u]ëE5PöbÝŠJR`d4Ò,&Ž›$ļ­¼ÜYIÕ ᳕®Òõ~W£ ³b‚(¬~lš¨V?Š¸Ótµ2·Ï{Z`ñf\·~nƒ«]ÔM¥H­£U5ÞO¤NíÈKqZ^눊@>‚ŸZÜä¬d>Zt{S*dnš±7å{QE/V’õó±%R +¾X$ŠÉ$Dô/yÿ)8­üUYÉ7¥ÇsoYÚ¼,B¼[#PJ Òš%µ:Ïr)ö»ï´¡¦cG±ÙÊh¨ ÏzúìòA;ªÜ¡A)¤…ˆ|ò ù9”¹ V"ºŒAs ÒàAN©tÓÛUx]ÈäÀ©Ù{G^›L<Ò©zɸ2ô0Ê/Ò_½Q0—ôÚfóQš“"ò„­Oj»A¯\öñêAd—5ÆòOH蘳ct‰eQóxˆåËŸDg|T¤™zçT˜;» U%’yÖðäu©_&°ЂýmùÅJBâ÷ÁÜt2ìÒšåI~^™„ˆGØ$†^&Öah‰³AÃ%t(c¡ >A»P5uƒÆ´—vù“¬2ÃÝéάÕÉ‘6ÀµʃÀ™!¼cÐ>ëÓ +¡` +É@¯x€§‹ ^‘'J¾oÊ4F^WÓ:32=<Ã`„t€’mP?ÊN2þ*ΈþÁð Ú¨{Æ:g&¤8c!ù¢åúŒC%Õüö>^ÅzÄ|ŽeØH¸rõo‚c…«íG¿šv#o>ÝØ ›ó‰’º)Ù05èO䣯ØBØxEøJÖà±ã ñŒ0Ÿ‚Èç^>rTQ@ óÐ,`u'4€È]¨ÉÄë jÄ]ã‘°¶b¬ ÀD(ªxfG¯ô’™õ\ž¤D@Ãáân|©{kŽ>F`¨d`ŽŒ©d8YŠ gCˆÀ G˜çf‚²­!€È0¿5q¼7"ÀT=F[B‚·šADY‹„§÷ëÔóúÚe`ºhPQúø¬ ”•«¾«ŽT”ùIà'Ã|¨h4Ÿ¥‰ÌÏ=ü akÚ3ÄÉXÚéwu²YÎq£m’‚1M.PlE N\Pœðc¥ÇÔ0'7$@Ï#…ée.eÂZ¢‘_ÝE’1Ó À›6šöa$CzõêÈÇLŸP'PÇ#Þ àl¡*"°òˆ‰ŒzøÇŸ€µÖ›¨–kÇ ”$Hr‚ ù/Z +ôøŠ^ 2õ/ mÕ‰}0?M{N’€ã>áÀ;QýΊv;©¾ z¾°Öþ]o€% sF¾”€QÔ~ PÆVJ "B²»Á‹€¬¢ØhÓUá9›çNl›‚›%º Ý‹ÖHiQ·’!ë\ùOêĆ|uʾM SzžÐ#¥ÙH/¼'Ní%C™0ÍÖW]6tdY’ òn™–òö’ &ÐcÚRññëÓi 1ÅêÌÖ‘«Xâ¨QeAÔ9Ä9Ï0ýlM½¡ÏçGœyx5]Pß‘­‹ã³( &Ø} vKžE^¤ôHù5a-…H[³ºëÜ*ÌHZ&‰€#À8šU_1“§ Øx"Øê¯:9'OÿJdv²(“°•¤‹¥‡FÓœe=ÙC-Úѳ®çjž­Ê9úŽæ!Óx-džs9N­¢Q_éúYÊQ7bz=ˆš€vLG(¹CFá„®rç1ªžƒkm¶¬·iFnÎJŒâ wØõYbšÆV@RÀYc=>XžƒñÕP«_0€H>i²Ào˜A"GRÁi#7Þ'{™¡Ó‰¶®"} ŒÊ–bÏ< f% &Ÿj¬,5lsºR{’O(ÿªþ;=¡Œ¦9…÷&úñ7ªUAŽ‡§FÆ?Èè A³é(Lë![Œ¥6ÿBòŸ•Ä¹…ti"kiÕØÞÝçc¯Z¢Æ‘ÈÛš F¦¡‘<²â®(wíGh©5²/ƒßÂ{´–Äš­„Ì©ûðƒûYà¬:q`‡I‰ÆMúµŽOÇ¥ØgCõ†)HpoÀ:,fµe8꘺&…øV?ÁÄë’2ˆêЇTãŠÝ +6(:'gLª arha§”.J!xtpç_ùÆÊ»©·ÿÌ«ÚÍØx{+ó…8ïIyú^J¹Å/>2Ô [ÐdVfîúH5ß­mM°!¦x + ë³PfïØ]_³«o~IÌJ_¨ m–KË_ÿ óvstÔì&‘§,ÍË[6^Q˜û*ä1î<(,¶¾+Ê:5”QöêXPéZ2ñŠ¢Ë`A˜T$5…Öðº—jökµ¸{˜ÓAhÜi6S#×YÕ×<°Ò™½[©'Ú×añetÌFýå× éNN¯M?®ü™SL(ýÒ $cÂæútÑXÑœ“gü?q;Š‡’ž‚ 5r¢ôÔ3VbJÅòhBué-çf¬YHg²7^œàýÌQ²Áá´80†³8ȬDØ^HØ"!£­Óms»‚´fH_°È^–æé÷Ÿt7?‡Ä4 Ç@8‘µºX¼(€øw-\&jQ—OSðbP—ëHø²Y+3œ,¶†)&£Å¦ Óäš<‘Ù$¼:ª„cqßEàApÑL¿pM&”ÖôwïÉôè>ÚŒ9(B´+%‰d6ÝÏøOF‰z»çqóÚ8Ê;>7–qoå’+m áñ°ÊÌYùH “±~zD|ôùœwÀQD!&€-Z¢¯Rî-ÏGÙÅpÁÐИ{q*Á_<2`Aî*µŠ@Tøp‡ÂoÂ"¨œÎ]:+^?…™ZjH‘„'âœlÍ šï㉄¿Ø=kÊgY›n¶5,31—m¯SgJ­âÛiæÂsÎAò …ôåJ¨Ã"é¿N›äIœ­d¾ž$j´ 5 õ«F2sÀKÕHª°áT|ÌBF–£Æ¼ZEbË0!§rA—´•L.¾Dæ!¢‚KÈ视§MRÚ TœQ, ÖDgx½I'5L¨¶&¯ðOmEÁ{fÙ¥fÙÙÚP¯ +ëËÞ×1ÛØ}E2˜ñu^O³w…£ÂJS©úÎB£$c˜ jÅ ûÊù˜ùøã-ÕjÁ“‘:ø•Ýz õêçîi×LÌ;_ÎÂO šŸ‚¶·}2¥O CõlÌÄ€Dè  ¼§8ħõ2gŸI4t6ZEZëxâËV»^â¸Ø'$Sµjµã,§úÀ ­‡*5ëäMK(¦º5uÐìÐÒÆ*~ÊA6/™ÒŒÓV&Q?†Ù+âÊFBgd`cÖ×âu±)»©7y‡ã²Ý¥¿3a>žC§%S ƒCì]¼ÁNŽ"À6…´%χ/á$h˜1È:Ag›[K6`ÄŸÚ‹¶¿¢¨à,ö¥ X#–ããQjd±ËG6ß$žˆZ­Q¬Û)Óœ‘¦Üu4Ñàr©U¡Êté“6ìBJx7ñ&tOcáBK.h³õ'VȾ4Ý°$v0Ùsõ¸·Ï*fþ`0í~?¢ˆ‚ª%œk}y@ÊH°`.1,"l}H$Zs }§¹pAo±B8 "¦àµN/¸½²éÊ}‰…Œw…M˜pµƒéŠŽ¡Ø<ÀçöR¼›ÝµÑ=ôzg\ jëò%ÿüÀˆH8+¬Þ½ŸæyéaF‘²pcfõEuõ%óšã¨e®”ý:.³E>>+¬ÁDÍJ9L +X~²–b#ØúðOn|l„V·Ét$fšŸ”y¸ÌT‰¿ºôÎQk¹¬°P‡Ý9;™ÃiP4’,Ì»²°£É vÌBN}c‚']O´Ínªþ›7ÌÉøVHëêšó»X,ä—S#9R£ªˆ@Ö³A +jF¸P?•ÍÕäcN’EÄ…þ]ŠÃUײgqæFÆD0·‘ä‰ÐÕ¥wå0Åî—¾Œ‹«?•Ušä™ àêQ ¯€EÓŠÃÿ)úŸê’aÿgÞÝáëÁÈ4³až6´ž>·q5ÓÊLO)z-_ƒí–Ü¢š šonLŒî€öJ!køóZðô瑉´D ï +¬“~ êÄëyÌh—UèþÁMÌã2TNÖÓ‚v‘„AÃ<`o ˜u”Ì…)–Ï¡ õ1‹3Ýè3ÈB2®g±¿È÷?k–96$M.U9äA¥^QKn¦t†3Æ1>ÛîúyxÌFQü±ãuðÑÁ÷ T,0³Hˆjk’I™+0Ýd ê`„ñi¡´m £tY‘zBØ¥¸ªAdÊÆwéZ¡ëþ»]ç‘¥sÄAšùæ$Ññ•÷4궄è´S³Ô~2˜B5Œ8¡tgªG[V“¦Í&ÑfWµ"°µ"ÙãáÜzCQz§¹oHÂ!ÏæwWkÒÍý-Ñúñ›àÖ³!5„…Fh‹–|m5œÈ|}Ž²›õëòêOXþ$8õ¶uÉ8}%Âk„Do á5°%íW[ZJ±-ôÑ)&c³aÙVó¼€B ÖèèDOÛ˜͊€uSGM³¡y GYh?Kèp èU¦H“8@Øì4p#ÍwµÓÖJ¨7÷”6bFg!‚¦GMÖÌ×úªËÁ]ãñý%‡ŸÕ¡SxYŒt~¬@÷€‹„`ò9í,OéŸÌ¸ Fdzõº €¶IÈ©1ƒÖw«”„ŠÊa×Ù4î!™/z”ñ(­¾É¦þSO3§´qÐ'OÁ2q:3¢þÃ,`èTï9µUÑ`W#£º£®i5VM"Q2}j¯*×âŸjc ã¼ K áÑ%l²3lzžÆWxgÍ?ˆŽ­DŽFˆƒÏë¶iç=¦!54!`*¸ˆ$®W¦èìÿ>d¼°F^–BIöþ‰#"w¢&9Xa"zC?Ƙítšt>gÓu.Ù¬’+)‚ S™°Œ1ÿ/º~Ý~ÆœééJvhÉÊ/Z(·™Ê/WGHÖhüýe:Œª“‡ÞJðÈ‚ÁwNÖyÁV¦6BûcìDHœ^“‘p‚ Žâñk  NÛ]2‰qÃåw¬uO'Qɪü©KºFûñ¬»d ¬@öþ-È,‚aÞRrõ ö™è‹^ä BÜ`žÎ¥Ž&{æ3<µ¢‘芄œÎ +¡÷}•ÐŠI,&ŸE‹Óƒn°Ÿ Bµ¨f°Ø†¡„ÄŠ **D üZì̪$ýh¡˜ðV¿É“GBÊ1ߎóǾ„º³ŽšÖó^ņ:?ÌCµU ºmi£ðk +ÖnÓ°Ç%6’W ³\2ä¶Wè÷ùs$ºóK]H©\#pÉñè>r튤©’(óDÌó†¯i +ÈÁ\g"hœ+ëiû÷Ëjßâ7L*0"kMæqí³ŠªæÙ€ê°cÐ龡Ö&@Äeb68—Ï‘h'Ä]•¥ÀRrE{ùªÖdEd6à !òè°T±´Ÿ.©£Ã5‹0ÇdÒ>·ç®&i󕢊‘ö +«·ò'h&ýÌR]=„¢xzWíÉr~þ´u±dj¯+›s&uFú%¬ÜÐR,•—a¶­wÔyTûGoJÈÒŒœµ›sBt¡È!tg«MÖÒ§xê‰À„®g0j#$kQ×Bª>P†þ’Ó—é_ÃJË£ŒhE,7gÅ»ço½>ë !„§¡ÚÎÍæxhz3ÿ¦µSàZ¡ÿ%ä“ñ[Á“Y‹yL­{§¼òæø°'szÏÛ¤Ãd*¤ò`ù­°\ÐÀ¥Ø¹ K}¾¯ë·ÔKk +­[3`ˆS§_(À}eª&Å)ýŽéµ4îÚµ3y¶++p’¢õvKÒ †ni¯ÓU¼Ü)Hlkñ變³u +»¨jî‚GdGº2ÚÿmÃôÞúI£ôQIέRÈ…èìdT­#AÑK Âiª³êz³£¡³¸ŸYe}uVŠ\öDgavJ*½¹cm™F|—¤LyïnzÄÃs)m r—çÞ¾à-6µ¶( ýu€·2æ7 ¢’–”@Õ9Dv}H¤›&Ü!-.>$¶6 *üdäÙMÅ'W:¶?Œâ›ÌÏZBƒíûtàBŠp'³# ðMþ=mML…PÚBÜÎp:Hv:µy ¤YëG’]Œ¶¿LLýhO€è€)ö¢s£æ[©ÉuHÒ)*¨¤ú>pþp€ìP’ì’Ψ—ä/Ê; +î¯WlÚ Â˜x_¤3wacZáff¦LØ–>åaÂÕb)z‚]¬µ5Œ½fQY91XÓÌ{Ûî9• î°P^8¨9ïˆÝèU*¹S˜ì[¼ˆtØèSŠ¤ÏIûÍà‘¬[@³Úd_c´Ÿ”~i .Ë>Þ·ø™ÈtÒA•ºÖ6AUG†3á ã°™¢çŠ}\V¼{ãyF\Æ) Î&x«°×ˆ8ëFûõ‰ˆ¬„ZÙé 98pZ„Q$E±ÙØ8Ü à^+bS:HƒOnƒºÁùN|âö•÷šY0·Èú–è^ß+Ò*«‘²ö|ƸçÈ·e2DÑ?O ëK½rn+/,ÕRaÌÁ¸ê•ÔüMVrî ²Ô@˺åW‘‚uü¡ÔÍUmd°š´<òÒ@H·%}´¦dñÝà-ü÷oVyP1J±Š/¨Ò8¨dÝ€ÙLÖ_&øÎ’ÌU’„˜F.¨¸>¨®H€ÂÓ5ÿ|;ôĪÌ@”Ä*;jú­<ÆAÎÀù7êø !Ú*@‰Úñ/™; +Ž–6ML‰µ®ÑRj¸;ôZ ~Fì•ý¶ªjbä‚ãðjL¥êRB;^/‹Ì7þ‘ÁTˆÑIv(ßc@ €þ Š¶°A±U‡î´èv"¸v +µ ‚Ô¿™`P.ö“PØ£˜÷  +P~ØþýÄFÀŒç¨b‹y7)sKüb~KfÓÂ[²Ë4. Fåâ ¢ØIõZûAJÅÎÓƶàz»›†ÂŸ Ttî 7 åq"!„ÁDÛ4[ ú»ªœ‹h—KZ˜ÓÎ×¢£s6:$Ç»è8¯ï¦Ñ]ÿki7:¹Ý?Ø^Ž’±®åkbû ˽Z´|‹ƒö…˜FPʦŸ@! ÖA”L¢?WKöá‡tQ“AÌóI&6f+µ pÛÛP¯@ÄVÏòçBbQ[=šüuñ;¬–€¿|R³å«åÐ&éqz™Î ;3AKGÄ^Qf2C{íá»ÖÌäjb<¿ö¸bEà õÜ8£y»ÞÛõÆHPO°V-ÿyGWJ#g½knÈ…u•‘pö㧒ž&K°Ÿ…[¯~D þ‚v]3dP–ä›Q<(-´óu÷[¡eÉR36;Œú›¸VWuà…QÍk¢èÔéûÖyungîûË`¥Ú&bJÞµ”ÑÍJy{==¾93!Ø«è÷Ø4LÊNÄíRpŽ>¯Úäô'×v àŽ4Ò¡Ö÷·ø8&VJ •°ç®Kà öÓ¿ã ïàãwaëjùüDyàXº~±¬è~ø÷„HW+â8Îâý‰ê<¤_£0{qf(”ˆ Et6ÇSä¢MÞUü|œ¼¿ì¥uHáÕ·6cà|—\ÙÒÝ„è”g§Þ×À74ˆîÚÓ œØűҠÖü!Â6ãnì\lˆ FÅB²=»· w¡1öùy’ÌvéÝ5urp"kÔ%á”ïQþ ]®þ€jpœÝÄЈZ¨PγG1xcû/Ѳ@@ ˆV@5óã•ãqÀ<<ëØM4‹šáYƒ‰â€þC£ÖÉí¡9ܘ^Cã–™ûCS¸ÍØ®Ò<ýÃÐزóÐÙÀ zm ñíÐ,7•þ8cy‹-Ñ@ÏÐÔË8QDSurIISÂ3Û”D&ÍlŒz_‘Æ?Ñè# ¬“Ÿ£ìÒ Š¢Á'̹$py¡ägÒÊ¢)7§.S²EÃ=Η– @ÑPƧ󹹉¢©ý§ﱤ 1|)àútŽ– Â’I#h’ô§eÚ–þ•4ƒ"¢‘fU{m0EãMë6iÂÇ–`‹†º¤›dñ ÿ9‰ÁtKò'iª¢Ñå hÒ,þcžEJ×ÖŸwýOšC!¢©4qÑ“hrM;joµÃóuB%¾ø(á7Ž4y'Äö5#’Õ¨/Q·³!:ˆ.œ ÒG4P~Ê4QyX¡«;¤ R_tS†ð-Ø÷! cˆŒæ?㟻0儈¢µo½w Fy³ŽžpEšD~òì÷‰Kïo‚d1Có1xŽ&…~Väªø|}T6¬…˜,Ñ… ð¯±> ”?#(Ææù=ÿ9T4Ps/E) jCu±¹ Úêªå3X`FÈÄ÷Á0ïÔômÀjˆ bÅëÕg«oM´Ïwî<ƒŠhÙpâ& žgSß™ƒ£ [\ÁÍ\Z—ý:ç<õÔÕdŒ…À¹îrpÔÀ÷±¨:rÄm©ç5qÓ½ÓUÁ„ŸA©€ IMÑk Y™¬“csd0ÁqŽ˜‚sZ\¡Ž «$÷~–ܯ›5Xh¶;G{î&„Ý• +‚†ÎÑjÖ„¦1ckR‡K PAÐÞ ÆàR$þ*Ç?QM¬ ÿA^‚ê‡EÇ4d bÌ úÿî­9/'ù;SQXG^ÿ-J€€ÎG6?Ô¦#·q–Ë: ³ÀíRýL4øN‚²žÆ¥®¨hþWLQDC>ù +VñRà ºÌn,.ë‰ò8"åÿaýÞŸÿÿòÿ^TuAÃ+ÀL.ÓJѼ”DæU 5e‘†eŠc ^}Ñ\7>ú\FH~k\§z¯¢iüK*âYû&·g7¿«e8†s,ÏŒáCåí¹Á‰Å¿F†!´•DêLãÏ'oq oßi|—F·Ȳ?û¿¢€“ø1ýh§Ù76¨Î˜ùdEp|ØcQ{{ÂI‹q´çhàtEM‰Ç¬Å¾#–J¸Åe‡·šwº0®Hw•f„‡A…fÅ'F˜~cÀ*Þa\11­a¬…´_Šn‚GrS/¬žCM…dqQ``a?a‰nDº`|Ê$Ž^uõ}͘zèDÖev,Ï$KºÂÎô”Øû«z 3§$™¤“ãÏ<´ÛÐjpHß<ì±ö³Ðj¬oõ¢À[§Fae· ×oÞuf šl™tô`4H ñ1,j(Ù×ȦÃí$x0¿%›Zq–w»Œe™{«OÌmí»)]sûè_¿oXŠ‰>IlW5 hҖǺîçõÜås<ñº4”Qù.;Iú3´–x`=La0P&Üá‡ÞSÉ%Å¥^«€b2!#© •á'o†”¤ËQ‰´¾a±âî¶mÞ˜'qîOÓ£Û÷(‚8áw(˜?)szˆ‚ÚŸ fŸK°ÃbäZJý[wɸšYÕN­aÖ—¸æÅ0šEüÔ=rÀ¯ÛwõÙòýèôASåf–ýX‡õ4/ S¸€uCé_Of.Ô»åk_x§}ýM3™Â$q¤‘WçòðÌ¿jvðÒè—n–o }ž$sìäy^ÔuúÌ‹=ËRìÐgùÅ꘲0”™˜µy9ÏÒŽ®ü:þV}&såš{@éã:P†keËиæ<“„Ë?ßšœõ¢í5p‘„côm ñùêM(»XPO{aZè°s°Ïß "c‰‚Q¨ ¿hèl\"T¬3B E•Œ ’JÒR(ƒ+û*y U˜|þW°ÿ}YDpv+1ƒê¯ë6‚òÓåŒÌ–Ÿˆœæ/ˆÚâ þ6Š—ïmîz±%ϵ´^*{$¼žG– Ê=‡¡÷ûøS}‰ø¦/Ì·8ü€™¡¿Y é#žþF“I aÏÈ ñTvcæ¥ï”âIEŽáéΨ!ˆâ‰EDF;¥…@Ä“Ò°K³=­BÂ7ÉŒx2‰»Wªåئxª²r3Žˆ'79@§Š'›/ÄÅw° Y€‡ØÃÃÉÜÙà¿nÒãþ'üÄýVk÷r£à7ð{Ë9¸ÎÅ3|]'é.q3È|–§®û·æùæáXUW®ðˆw%À²“À•ÒIÜO-GÕcÕq$˜Û2ÕÔüL¢ð´¹ŽI ÛS™zQÖÈ4ß1 3ˆŽxIéjžS“‹håÔËZ2‘‘jŸÉØòìŸD9 +î‹fà>Ÿ²k¹%Ý“+•¶…òû´ê cÕdÆSšÌ’W*‚¾éqb-·™TÇÜ’3º*Z(Í=€µBüÂ`%b³Q±ÎÊ­µúÁÀ,„Uþ(§4%4šôFV?-˜6™AjAí‰Bz£àœ N:Äu,åx™¥öfïìŽ\_G}ø\ÆH %ð>LcÚOŽ)Îà‘§&8DDrÏ*R)eÄÀXþ¢íñôí° ÆO/2Y9[›êy'k3¤º]Ò7žÞ +%\´ØE7 Oƒ’Š–ïìñIJ%§!ŸâçÈ~<ýª0}Ø™òo<|x#‚Çfþ>*OŸ|\zÚÁÌ¥U»/¡]¡ñôöÆa¡OÒVJ$pj[âDµR:Ù®#('³„ªÄW»ôä„«ˆÞè~©<ÓœYó‰YW<·X0ãÉåTà-t/ÎMÃqùÆu>iDÙ ˜!†xœŽæC…À²B§z H ãÛkn0¶:j+¢›ø²Ýíc+Ò ¿j+õf@„";ãóIñŒk~ âeÕ¼ò"z8\}LYÕdõ…y¡¡¹i½|Á1¶ƒ"ïõ.äÆ?ö‰—!¼ºsRºt›]ïB•hù—ÖÍ+.Iþë±d»£ŸÞÒxÂV‚ãx¾V—K^iäÝVâ÷?]/ÕQcrSwÄ æqÜ¥ç•3Œr¦R倷ýBÍ÷Ú>%gVc 38L±¬wðPÈm}K°÷3uÝÜ+tPäg–:ÚQeŠf3³>vŒV´ùŽ`‹[³e¨ÊÜ‘–æù¯¾³<ˆ»»Žr_†ø—\ý»:—!ïvËœ \ûÖ“ã`•Ùñ¯Ëî„õ¯4z>C|¢T˜úm›ý!àßg2º² üÕ¡F+ã_=”Ò€®;2dá_Š',Qr2ý»±eú#›<’ V”á"øWˆDŒú÷[ÿ‹-ÛN¿–Ç¿œzÊ ìñéîqôqŠ(àß5¥ÞÙ[ÿ–wxLAÿ¾”êÄ…Q,)VX¾ä®ÿbWi®Ä(7S'”Z“bf   þc-ìÙ´É¥Uÿj¸ÇÎÿNF*ý{:·ˆ9ã_`ÕûíÞߢ¦%mŽ>ž¢„fý-ºY—™ÅÄìƘPÆêž—£ö—3Ñ2HMšâõ´oÙPäÈL¿·£ˆƒÀc) jÅ i:š¡6|™‰¾ZÑ-å”Ï3“¸Îü7VíÑ pÒöOyr§¬/ñ8ž…hXRÐQL¨üpÞr$ +¢͆oöi;Ìw\ìe–èíÁfžKJŠüj ÑIÛ‚]š’7‹Î-×Ø« SS/gzBZÖ^„iY‡½Ä½¢\‡ßë-3fn·*¹Úãƒ;ìj¾÷M:zS]N]³!“YÝ]:ùê9¤Vø—€]1ýrPŽ¤÷Ö–³ £wÌD5×9 ·¬…l~EÊñj|Ò¦›´ß«ú0 ’´8Sʈ‚­ß õ¢Ò/˜¡“w"ÌD{yW‡g!þ9К±ÐéÆržÉ®šÑƒÒq´(Ñ![«;õBcÀÀŒð>øiÙPJ@ç‹XÛ rà¬PÓsKHÊÆ­zí€8P@qÏCè»ÂÜyc—? ^C‚C3KàkÄœ6×V¨7ó»>jÝJ»9C½$0$C)¼"õ­ÜYotjÌêmñ£ˆ¿F¨÷ËÆìhÍ”z#W’PÚÞÍ^JzÐ<8ëÐhÃÉ/PïT¼Ü>Âýõh@l¥3WŒÐë¨Áîí§ˆÐŽ}öyŒ³õrŸ[Û®ØàSÈ©W´X'´!PâZÆ‹1íŽÉý€3-´w:#¾QK¢‡*õœ´þþ¢ÑÝr2¾IÕýít¥øÓ†k° r¢ëœÕóÞz-ÉŒÒØ€´Chû»r¿Éfñ‹PS|, óy°ÚÙ7í>¡%vLñ.¬1|Š®;\LNAJìÈMy1ÆÀõ»ï3 ²Qö¬óGÅ‚pm¹µú¤£œ2”Ë€ƒÓäë ߆ÚëhS"¶ŠS7I1Lj-»).뤼׉ô|ÁQnå,E‹ò#æx'ë‚ÈV:/CA„RMi`âì®%ù;møJÀ!ŽÚ,ŽŽ¹y£±8¨Š°±`ÕõáEhÕ¡%"zë¾€Þç!~a~äòƒó¡æŠ+þñÜrwõòœ9 ož!##›¦ظz/dƒÿÅת÷JyÐ ,Û+‹PõBn¥"¶›á½zåÉ{Õ %Á¶ú 7rõŽÑF@ÿ\ß©Õ6¶ëš"¬zêëkøÀÅgÇî‹]˜±~J¬Ì¼¨êE!ñ¹z—=¾†ß³âfó¯Ò–Ç\Õ+iö>óÚ0«Þí •ùÙf‡ðŸÖÑ4#¿„ †­®(„fêúNÔB¼üâët7Eß¾¹1v+áíñ›\·¥7)¾‰u»Ì­6i®­&ú#óŠîXÔ\‹»sbðí µ‰¾|W|$Ó7KîÆn  ûª°Xrñ—:™×—lyáìZL&N—{*Êÿ9äÿ"Ìk¬Gtùò}Q±Š|°€ó=+ð®Üª‚ÏX¦2€B V®Ù|iûfyršCt?Ûš’¥#Èhºæ…Íùà#Ð3…H¼ÙÐù“Mœ­pM)GgE`¼ 2ƒwXYÃêZ>ª î^3/´Âš­ßfÊN_–õÝð¡ÇŸRÞ]}ÔÛJq1ÂbÝïïî'Kmã]èG \z¸‡À÷‚ÿ·kzî]Ê¡wwuW:$î-/ÞÅnѽz²Gwô¯s9‘Œ-GR¡ü mxùFr¬.Òñî²WH‚l³W!â´xwä]9ðÝUл­®ñnx³ õ‘©2ïÚÉ¡ FõîÊ'Ý£vò±ÞÝÁiÓÜô&"ïîcù¦ûsA-"›èpZÊ{d˜OPW´ÌßÞöu_ð[â§ÓÛXÓKUÿ5ŠNá•HZSS-£°ZåyP0~R±;5¬uëÈ—˜,ŽiÍ3•Ó'­/2@Æ(ØÜÖÝoš —w™5^ûÕ›M¾Ò1•„ÝõšvÖe0}ÆKrhˆ‡¶Œæ³äÅs‰Pl`i5²z–Á eÕç_BqW¡åÆï H|Ø¡øèßqÎÇš?æ\k(q*[‡S`H×ì¼1”ü™…l`ó6Ueñ@½nFÙQƒ1ª÷º•™”˜ .{縇ƒn{g,Œ‚ºu»âµ2#œbsìD²ñ†ø‘f`d4 û¹ÄôßãN±ÔNE×;B¯ÿõ8œ:Ûn³žP­„I ø¯Åe@PÂßçúâ]ý¸Ñ{ÏgÛ5EQWEhbyRÞ{ÈlLiOw À‡1a +-¯ÁnQ§é¿VlÍׂCpØù~@ublŠ€€õ ²±1"â½pmZ‰§.¾d¨œRpÐ6`ÈÞÁŒÕ1ÒœyÜÔ`xÜ" ÷àœkð©Ä\™Ûà~/œ¬»%Ùfzðhùºãg$áJ(-·+ÙÂ<€C`6˜ ;uo3€ S“Ñ.ÿ÷ºƒo f=£SKL"4Þr¾©u3œÛ54Fè³ 4ÚK +öþHˤ€˜Y2}&Fü$ŠøÑ56h«ð¡èšýŠŽn?ÛgD‹/áC¿s{E& ‰õX²ÝÏ +½ƒàèWq¯Å„öÑuMœåTçˆU_Ÿ‹n`«T£+0r`cÇ2KÓŽaôÂG7ÌO³ã^°‹Ttÿ£Û¡Œ4Q(ðœœõ5Dz á/¬rj!¦Fõh‚«·85 )5âV£"h¿&›<âJŠVï’EºÁî@K‘4ÍwŒÐ„Çòesm¯jX& œÎãüu*c̆€‚w1„¦½([:XÕáÔ[û[+bY*CÞ :ÓŠ_÷È+ ]²O•ñE,IÂgÓƒñ—b%~Ô ?Vè#€5Õà÷?˜¼½ÞD‚zêyeÄ–¤…eX眩jʶ+d  Æ”mb¢ïgu£†Öˆèžôœ”[Éò[P^óõ]÷dnR¢Óõ ûD% -ù£ŒC¥·­«ÔpdxæNvk—tj!1ÊýÞ#›0ÍûÒ‹FÂj_aZyž„ÛSm{ qA…#w]$–2žuÉn‘¯º'b º|‚ƒ©ZÊE1%ÄŽ=¾åsµ(»ˆjNÎ æÀF[bâ>gÚ(øÎä–*†Uq›è¨ùÃLbzb ÷nS~“À}÷~¥v]–â‹<’t2øË=„‹´’Òôn4úåÓ«Á›ÀÒzgA|Ì©`‚˜h3Á"Î(+KŒ@¨§¾y—ƒ6./ÏŸÒ’´Ãö4Á‹QfVG|øOH#· ½lóc<æ±nÁiš·ô‹oÁ¸†­OsÀ}Ùê/àÏ„ÀíRÞ Ý:yÔ[*ííú…@$Øq`!q‚ѵ_ØòèI»2ŽOÌ$˜²Ù;f}Px}>ιÓÝk0`­S\/Eñœ¸®DÎkf¥òGöÕlÞdNÌØ»¬kž•¼; Ì‚}uV/¶N4yô¶%„¹Å  U}Å6·4QmRs +\VK¸òÐÌQÄÕª,}ºÃDl!ŒC‹nÛ]ˆßmþJJŸ!>E(M¼q7Üû`7·žaÖ’)7ïÓtºß1°›0Á8<N,§³¹HÜm ‘y·®YZ3qÊø£°³g¢1„£šƒ¢¦Œì†Ï|ɋǺï¿^µ]È›k2[n€9qaD?6²º{ +7I¡¹DÏv|UÛÎ%6ýÂ"/›ŽT!Ähûwž†‹xûÞ1|à „Ð° PœGÙÇ÷˜ùMîú¿ŒÁ)\âöܪie+¨p`.Õ,œþ ¸Ñb)Q¯Ò Í_ˆT«wïZrºMáãDœUø`Ün¯1vVcÉY󉡆uZ›[®Dd ?Wti˜‚yb×ümSŒÂûÉ‚#o^ô:¤î4þÈÁ¿àäÌìwÜ0 G#¹€d·+ó;d+^ÌbY|J —aÑð50uŠÿ˜4õð¯#U^‡{þlªéL‚ïÇNÚ¼¹oE¬X.­þ;>:`²ß…õ°ÉÙˆsÁbUÕ'a'Æ÷²© Ýmg&ÂñLHSŽ8ZàdÆf~gªË–¼[é.dÃqè«Á4wȨ†ä© ©xonUzyOLf#|䋸C[È —!i   ‚æ‚R¯T(Åø3Óæ¯ä˶ܲÓ&·læ¤yºÜj°ÝÊ•Ú©Rµ øŽVˆÕrJŒ þ¦Œõ­ˆ+µ£Ìa§•£"x¿+Lv +ç%›Å¨\}pç?Ÿ<Ã^6ûFøxMÖ9SpŠÞ#xeÏ‘½UËY—îÏ›‚û¿V±ËFÇÝ5R†jàö¿9Ïjø)è©>½j¦óÔÕÐjºƒý<›Ncëâo¼ÄäWc¡'sÞus)N‘öH ¸ïÉQ1pËY‘S/ì8ÁqôÒj½ôy¬'$å˲²S×5 ’2:2º–M´âG\€rˆ¾oP&µ—УL§H@E`ÝÎäWíŽ'Z ^øŒ’rðñ²¸JÆI¥^(¾©l¬Õ¡µžËâ¿^ŸÍ•ÞŠ7îM8¯¹Ï9¤vV((þ|i +÷»7lYß +ýVP]Öfa¢àpÌçgÕ³ÿq +¥9<+'!ÿÿSh/¾µŸ÷k›‘˹¦! A üäL8Æ”mzóÚi Ãjع+Ü`ë?ïPEÏcè¥0Ò#›–ëÌ|¬Y©ãE)|ÄaçÚü&§Ð-`un ЗhÓGAàëÈC‘ƒÊdÓjT€ºÆ,2 °ÙŠ¡Š¯EkæîPib{è}Wäp{þ Ô¹æ+^BÜ£²–ñî³Z‚1™2 Ö6><3E˜4>Ù²ú ªøŽV&/vÉÇa¯™[M8V9 yµ3Õ!h!²oþtõ¦×_€òï æýË «aÊ©3Uj2n ìÄĸ▩°u̵Ê×8ã ©¶XÀvæ ͤ–©!F|»rÐz¡ì™ s.Í×?ùÂ9Ë! ù°sÇ`6yˆil IÝ!N¢â”@²`»µ` }–fÅø±{.0δ!ƒõ¦êŸcg‡ÕûKûvÇiL¹Òæý~ÆÆ„GyHÑ+àˆFF¬…ƒæ‡¢Ý˜Â<œLX³SI~ +4,Ë»‡Ì|ÇX—ZH27ÍÙÞUnb<àði™Ð]€‡Òèà—¨W +"4Yö?&Üœ‰×ÄOÚ\¶é]%Û¡¹jÜtÌ22U׸…ÖÅ£“5Æмò±!dt0ÇçMþàÓNZ58îI;²$·ŽèŒ¨s{ÏP©T(´mfdѾš¥zÖÁߊåë¤û¯d«eÿäZýhtXU Úq +Pr€ÜÔ46¾ +¼ã›áÄ€dEß©{˜‘BÔÙ[½,ù çÂ6[çRs²?3*j»Žbaw$ÈK¥NßœÚÎdÿ¬ÅÇ_góºà9c!ší·œ9ÒNÕfßÒñ‘à ÉòújLÇN˜ž`Ä«àoñL\¡YÔ~UÞJ™è©ÙRÇè1ñÏC®Pº×üëà=p?µ¤ž&`<1ͦ\s™oð<Žs–ÖÅr’kÞwdŽ»QBÀ¼Ë…K&þ6µÿScŸ\_OrDÒ‚ïý,<¨…Øò6 x*O`¢²T¾üâ“Ùpçf|=Šÿî' +;³ iÓ;æd"E}ewšFxF± Ò9ð@Fwr ™â õ²þ·‰j”,òaªt2I—B 9¨)}29é£i“Hê¦=:á+¡ifD¦AÔ /e&Q% geÜ#*Ÿ$Ÿ‘*x¹«êk>£GBðö¥8‘þ\"p6“­˜O{¨ñ‹Èµ´m®PlZ¿m­k +õŒ™<¼¤…ºÓ¡ëŒ³‰:ïP±" uoO˜èr"3ÈBo,+Ûn¤¾Á·îDÇÃðŠ8°ë€šäžߣ  ו¦•0 +¼üÝÚ×i7g?´ÿ–ÚÔ?ÃrÕ0âx›5Ij£®ðó;:<ï#Ãþh +¯‰¤©2!Ð`Ô¶Ìúš`²bzèãTzý7× Gta°8oÈFì/\+ê±á’s|²™±Àƒ_2®T/-Á¥ºAo¦É#€'Ü>Aúê¡y ÷£ F'¤Òí¢NŒ/¾9Ÿ6mÿ.Eý{©©î*^á"‘‚623Síx/NæVpZδv˃ÂG¸xeÐqV*¦Â.½*¿ÖìaZ£<0üÅ”>"KÇ·¯¢½‚ïM‚ÎOœ/íê¶ôùöó¯è2WY`‡-ðPë@$, +xN6ü-Ù,nLsG#ïiÚÇ¥(t1/»¯‚C<Ó÷"â%*þÂsN} +»ò4Îo%1_¥;§bYÀoî§zÊDdíì±ÝÍÖߟØkwÀltÌ™¶úpNòÑá~®_©*Ù›â ÚbÿøyÅV]{6/2² /Œ•m(ÉdAPAòIk·Ø8ßîž!±IÈë¿Ã2y©\W³åË Û7NñÑC—ÜUÍ»Eѳ-ùgkɳÕúƒ'¹¶ãx‰€ç‰÷[Ÿ¤LP#Ýp²&¯×"Ê/É4CL¸KŽ²^jÕôÊP_WÛx“Lâd ü+NRG¬ø÷H’ÿa¿[B:àr ¨–óCJ'b®gàY>„ãúŒ9Wž¸‚jmOéû®ÁQd F²Ø¸VZâ(R‘tì.Ýáy‘-“Û®CªppÕ2!7´ÙEãŠ[¼¹ôÎ[8¿vŠHŠèd¹fZµ.y¢Îd×¹]Ö7#ƒØz€u)øÛØÆe7•zËsZâX1IÞ&”Y‚º@¢®HGþÅ—Šçâ0ºòÉΘâ…O7ÞpÆ‘DfWáö£ËµI tOñŒ‹¤•}‘.b&3os~ûÏFe¡£gQ¯þ†ÎÆ?ÆU|I"ÝèÓøKÙNà|÷•³#ªüpœ]êPjW.´9 Oþ€5È.õOWß"A™±Ù n Ë’ž±/9ÏzBVËiûº¢\]ÅÒÊ ,Ÿ±ctx ”óY[¼;y¡¢NÕŦ:¡18“…—Ž-@åèÏå7ê*|âChâMNÝ©k ÷v6²šF`A-`(~ª,ýÚ´"øoš"ÿþè–…÷¼ê×Áª‚Ô^ô<ðÐi‚M,þ$õÈS>˜ì…BS+>«þ1iâ— Fêr'ÄO„L¨Uqp.¨ üü àw aךnQ9~Ÿ•¸ª]Vfv‡ŸDØ·LÎ5ZmC+‚÷ò|Nuõ¡¹{à®Gôm|NYì#^ý¦KÚøÒní=œ?ÏÎK˜mô›-¥½ûú“Ç°áhn›ƒ;CÿÇ™·”oñ8 9Æó³ëû[âIÉ6Nnε’SŠü;„ß»¢Hø c|7ˆwZW ½‚Ö]îPÿ­>S{á%Ÿ//ÆãJ7 _q'`ŠßR•ƒWš€ œ…A­=…ñ2¸ ·ús¸ç(&`"í³ÞCô6¯8%UÏOß@%cPË8d¤ªÇû`3¡t÷E +3e~#uó¿0©‡0ÈÜ(hk{ê[Ø‚‡¼a j°¼xÄד‡ –QVŽ6ý)¾ÉãZìF{±;ÅOuqv@úîÂŽhh˜XÕÞõèmŽˆŸC)ðö©t1ÍL­Ç!|$ÔVjÙ(%öÙ†"ÅF,pÛ´ƒö”ÐÛdRvÆšÕVÎ’yÿ¢AÔ!¬/«~€r ’Qæ*ACöõËw³Ý Ûs $@Sty;n‰_ /Àzž6(½[!ìPŠTÍ®åY"Qo† zSÿôÄ^ G:}ŠôËOTÈ-ïá,×óÍË?‡Zgè‚-uÎ,¦1+ã~A7=€šjÛ¦ãuZ¼ñ&ÖÔF}wü×¹A§ÀVLm:bŸ^ÈÚ^Œ÷*ˆ ï½V­•ßÆA`ݯx€”qŽKÕ9ÜõšaÅÄãƒB j‡\Ño/:1”•‘ꎆca¿¨Y´n*­²:Î,yhP¹­,jûõ´7–¡ðÞë«Vúº¬Kp[ü#Ô!iðÐCù¢àñχS|Ý°T×ÃÓ˜/ú-ŽËöe¢ñE‚I0x!§gÃ$vrq %] 1âiÄ¢¨ ‡·à‘ÒçÐ ˆ­ÿ¡&1G êÄ™áK*|²Ò ‡‘ j¨Êà‹ªV éÀ€šÄ]ÒAû"W)L(BžÃÌLÓ½¦¦ìÙõ%,ªÆs$FÆШó1¡DHèAô–¢œ,l¯ê^Ñc+ +ïT!ÊAšpÍMAn óƒ`µø°Ñ LbÚë%8bIM»ŽZ u’ÖÙ”%c¡9Èm±3D>y«ªÞ0µE}¦ÅÚ¾s` n!B3 Û­ÒÇ.éÐ8‡œŠÐá Z9îÙK*D2/‰ZÓ‰zòÓÐü×*Ì1 +y‘‰ÙDò¸¾h¹Ø"x€ (9 +€@ +x@ +$ø>0(… ô˜¤LL #ó}†“¡Q”S (à +x‚ ›¾½:[ÿB¦è#Ê@ Üñ€ÆŽÔ†>ˆ “·ar``* +?+¨zàõàʃ°Š‘P«QÔêA¨ƒÍBÔ©(h ® 8$0P¤.!H,²ð +†ÉÂÌtT° (,F0xW/m³QÁ‰QÁ"« ®“ÇX` .T0LTg",E@Ð+1“׋R¸€ÊU´gr©¸ÓÈ6H‘;¤}S2qîö&1§3²M§œ^ºZ‰§fx—Ù;RµŒç7i€[lŠ +#—Hýö)hŠc !qPˆayyß謚¦›&Xƒ*’/GbîrLf#—@ó’EjãÈ­‡ >>Ur‘#ŒJµ_jÖ´êI$FÂ&­=µ8MØèây6‰5Šª!n÷á²@œVœ DWM•hwU½/bGz7pd™‹Ú&"mT6Yá½”~p$¼C"¥ +ï uA-_Õ“¤¡’jNq"µ†B•_ň‘0q¨ª^º +B*(5BåIQ+<•ê3t[vqî š¢W½5"©P,dã,¤ïâè5¬-$ÅiŒË°›_B :Ý°)«â4½ŠbêË:$Œ’¢Nã_‰d ‰ËÄêk„‚5á{„X-w<ë +#~GIqC-R›TBcg¬™¨+DcæzËÇ°Î&¨ŠY?4¡ +2)jË‚FŠŠsÔ!óO=|„È^5¡Gk²)âeõjjz[¦&ʨô†)Må”vmž 7‘ Ó¿Ó«t(Ç÷”wFÔISÅýÓYh Ø"Ë"ÈG<jnég¨Uó(tóÑòzGºAQ$çÈŸ™I¨H!¤´èhÝð‹;0 ˜Ñ9ÇŠ1†±¶]5θ6ù!kŒ U!…±ãEIÆÕ¿IÂËl¢jqõ×$›"-ô˜f‹ãwk7MpÖŠŽƒìL&êI+D-žJ*>áó…’vÓÙˆ ᩯb¼ÁJo}´£(Têd—áLÐXi£E"»:ÏÌMHyHåî`| µå¦ÄÜÁÔ$!Bn"âv‰Cb¨%®!Ä$Þr÷zX¹ÜIÑûús:\º¡lö:g5ÂðM%\#ùQiéCÅŽØ­3¤`mŠ\©™<ǸH9äš•?ôŸQ#³jÔ ,ËgE"†¥ì¨Ô³ämŠŠÅ–¦SU°Â°—¡1ÊäqÂTg¢‹*zÑfA‘T©R36äÀ ±ú¬XY™ª–V…)!êÃ,.›ó›TR!ß-ˆÁTÞý±öb¡R£¡Î¨Q”߆CŸD w‹8f¢Èí|<A lÿà扙 î·Ã/¿0½çˆ7ÑV´3Cé$qÊ94a#x&ˆ#²INp¨6º«‘Wg‚üÔ„CæY]›™pÉJܘ?¤0A?-z1ňXÔÍ”51RŸG ˜žE46‹[ÄLžÁ«ØR8®!÷Ä0I$¤ôª…ùH´ ó™Ë +ó®D‘®-5ÒF$rV EêØGIËCçRÒ ‡RgÒ“uBž—H¨±†"j躆"sã ExÔ)j¸§ç䧬KcJdh„;0èb3"µ¿â-í‡Âˆ°Á\Ųq²&Içb¨«šâP!\r¨™råV¹T$wÕкƒEÑÕ +Ù%S ZoÙ§ãzXìbä}‰*fˆ‚¼mOï,—ÉŠP:XÕ—L{1”‹æ $Œq%Š†<ñ¥zr¡«ÐªÄQ* ).¤VRš I&ÌQ ƒFÉ ÆQ³Û%ñ}­RžX„²äx"ê 8s(ÏèQ"¢;èL´1æeh³ªê¾MÅ5ÆXòÔ>&üÁ/l"â²fBHMÕ×D„»f|ŒÝxH,ˆnè[@C2dâÂ3Î>µ "VËÅ6åâ&h06€x  `0 €tЀ6 @ƒˆ X‚ƒf°š’2m,Fm…þ VàRŠwJ“aßÈÈ:v‘šE©_‘ÜW¤¼‰Ù¸ðS°€ªœ0üLÑ^$f¶ØÍ„Û5@J ‚´¶H =µÕS-¹§dŒÐd¸O(ÓÕ”õ†Ðj&ª1I£†MÁ1H³¬(>RdžÚ›™8p¹™ÒfL‡ÎLÁSÝCXB?Åc²8”Bë;£:0˜*w[4|)©Bf¨ìŠ`ÊÇ0œR +c)©€]ÕÁiKÈü-Ú¥}6—ë¦) +!S³L!a8œÄt¤³hUÑP9#JðDMñDú¶À@*†-¾y Õ9Ô^ª~;\f + +`ž Z±Ü⥙L¹2€N¨Â"}èx +LxÒ +AöørIoXƒýŸ< ÆjÅ=ò/Ä:óPwÝûTE°ÎSTˆ2ƒè[ˆS!¿F·?á)âf¨hDZUšHTQ¨YÏSU %º^&a—{_mÀ‚W7Õu`P©•ó˜¹ü?Û *b hŸ‰U’`×±áÉÔÛ + ¨€ ø9b&‹é£N&*È &ŽÈ8Å{†Ô~|°Ü ïÒMq™>#ÙÖ;¥C?!×Ôù¨ÕTš Êc + uP3àƒ¥ ^š;|#3 ©ƒ;º­. ™AëMµ/‰yÌàDl„]5 + ÓpAS‰ þ)¡ÔLXÅ"3 DÄ&F¡_Œ†ª:øŒHCL¬j[„Gì`ª›…ªLÌGPÂ!d,b¡ "ûL¦G¤LüfŒ‰r©£ˆØƒÂ²™47="ìSa™ž6¿zˆÏÁ_ê¬jbNÛ_Ÿ±Š›Jèͳñ^Ðú–¥—UL>¦žÁÖò„'Ñ +Y¶šŒ©ýrƒ:3£:…‰Kf»„Œù¤"ô–¸åš.3p£üž9‚³Ëæa!†CNîQ' +æI"my§àê¶RQëÀà+Ûrj‰¦ŧ‹ ±(h~OÐEâEWâ¸2da餇90àh +&EÈ«zF‚fŸbýšYˆÕiBtˆ<¤jåã˜( +ñÊÔ´cðrçÒN¢1!hS_äÚÉÔž…6•¤µHßYî$fR3¯¥Ëé‰,QçÚ’ª±a¤¸„EEAØJ°Ûa,,&ƒ=ø«º UµN^}nÿ¶¨¨QŽ¯aóR å !¡×„m&¼Ó.lÒqm“ —nª wHA£V¡ÖP"ã vÊ1HêjŸRQ•LöõL²†|終£Š’)'ˆFêûDˆ Åå~þb\ð ÓøS#ãµ €U¦Ä䪚åtÂvžøkT= BÑïâ?LÂôáâÒMbhAæb +Ä ª +°€¢k¨ÙªYá $ÌÈxý‡ ð‹)8Ô‚‰«`sñ†Ê a ÀØ @‚rÝÇ™2¬Ù,´÷5«Ú•N”T‰¸Ä!²Y=7>ñצ22§\8E/?´7(œ’…üƒHáùZSK@oÅD¤í¼î³L!´Ãz!0˜pTRz¤Ã¨ FD((€A@€‚€D"ÂÁvóÀý¸ðK¨•É©p¡@”FgPZÈ8ô††Ãˆ+”T|" ç8‚9rÁ‡KzP@ƒ©š‹¤V^(š'ðex)%3,4&abP\À& P5–<ò ` +YšyfxÃðà|lž„š> ç˜7S æDÉÂèI°uLEºƒ‹ˆ ñ*¦ XJH*!ŠÜÙp‚1U.)þ§PhŠdab¸`ÂÕXÄ‚9tÉðÛ4‰c$¦î:ð«CÎãå£ab*,D4öDÂ?½ž˜!bº¡‚ÄQÁ®‡q¸ ÎÐi>— 7$¨:M÷Ŧ‚à +š +& Ž `°nLaöñÐŒ¥†Š6¬2ÈT°`ö"nfÝÊ<…’†7.fLŠŒUÓÉÕWI¶ %’0b*˜À`Uýô¢jŠÅ[xBŽO#°`â2ÊÅeÝya{˜Óì"Ò›ˆT,¼Rý\dE ™!41v/¥ŠslE…cEáDèC©Fá³ +v[qBCZ4ÄÛÙJKiÆ¢0q¶‡>ä«Pñ!b˜ BNc( ƒŒ>°J,3 d3ŠÅŠâu + +‰¨@úÃ)HÈ'ª6”¡Œ°t¨¢žˆ¡ k™›¡ã[C‹k5B—É%âb¡F8!E`b$Pð( „$ˆ@è€* ÁP€Av(´S"üÌÒÆeëHE(¨hXA¸ŠUù ‘Ñn£ûv"Æ*JKM(5åi„UÉ9¾o‰-t1‘j q§Þ-ä許`{ò‚#§²-S*«3Sý*[þ$A¨F*jH¢våxhãz•¬¬0£Š¢Þ\ Ó£;¡ 2Uæv”Âb8­Ãòú=<\ÞåK„ÂM‰19‹aæšàÖ¼ò„~ε…x†úhBª©5Rþƒ‹b‰©Äeå‘\8»½‰àeÑÒ´ÕfâDs≦SOÞjÕB]dŠ©³ânÕB½!îꦃ(å‡ØG¸ ûqÏUE¢èŽ¡›Sú8áš{âá¯â鈲Ajñ«Ó4œ&*~O“:Tœ†ÖмȽ¨^”¾Z¥›1n± “U>qS-æ÷GNŽ>4qÊÐOf˜¾]É‚¬Öçl§—‰>Ú’£&5àB> ÚMC¡ ê5uþ)ƒêzOãoËŠÝŠE]m² `„K¢j´)¹Z}ëÄ„ðˆ-º[¡¤bF†B½Îrüt±yˆpdàZê1Ôõ;—d¯(IM½RyËÞÁƒ„䥒‰¨0pÅj +œ²µ·$&j¦$ÊÄ¡c÷Ž‰°OÐ{þ"ØNT©@½Y%'’ÚZž´Â”ºLÉæ‡Lâ¼1¥òPfů'Oâ¾M +ù2ÒFeJ‹‹{‡£f$ø_rüo!‰T!L‡÷IQ¥‚ jROâ Õ’¼P8úVGä³*µ¦ ¬6b3!1+Ì(ãPGãP2o©¢R¬j¡¡‘ˆBÔµœ×ÑP|ÑQÕ¨™f06}2¡¨ëj‚%f]|½BùR°¤âÿ1I¸„Ä!C.S}Õ˜©?ÔKâú=¢Ú‰†™Ìϲ.FÆønDEâ WņÉ;²‰0a¹© ™}(0>A%†üÛ=‹øBÎÙ %CiÙ —vÄåǼž¨uF‡BÉ/ÂÊÂBfr©P”Ìó¡Àw—Ç©Cߧð„ŒUU$C•Z÷èf‘ …Åòa„¹T*›ªJ†Fbç—Jf©âl(ø•‡Kdª—8ÊÊô)ÍûQQÞ¦Š¤½)‚°R®t"‚Ϻ,l‚¹XñSýzBŠÉï‡ôqâWHŸñµÈ°ÄÙØ SŒÛº¡ Õi§£Ä©Êªúù]܉ÀšŠÝé¡'ãÇŒQ£" É endstream endobj 18 0 obj <>stream +)Ø43!ˆó!¡ çhV¹ ‰%]ÌA” ¢1ÑCVcR½º¨ÖÈDmï$ÛA”D­÷Ó8ùENmTÓYcǬŒ]V®©:qI¿«¡yDi®Ð™BxÂî¥ Ll½’Íä³Qåô©iN¢Í.!åD_+#ÏÈHÎã +|Ïù²42¸Çd%2 Ø%©dHK¦cÉħÝT‚%|c©@ƒ†ø&t5¬ÜEEU¡›¡1|Xf*Œ'r˜ŽÂxd™wCç¯H0Œ;¨†³nr‰ƒ› +U.'NKz•iøyÙIeÅðhbžu<ËXôE ¨Aõàˆ‚A÷X¤%º´*Tu`PßÞ)á"J³·W¢º½/÷Æ@e½?þWU¼Ç…†ÐôÀ’ña'¿½Ä—ïiÀò¯’S= öòÜ©€»ÁÞO ªœ*à¼9ˆbHÜÕÌXš©Ý}bý vV +ñcŸ "©ÆG¿$Ä„¥B¸ÇÐdŠ„}¨l]­Sª?ê $F*ãPÄÕ"¨ê‰û9NuÞ«ýä\v·§gàëU1SUÅ…\˜cÑÕð´¤);´8THÆ"±YMNSR*°3AêÒ3ì”h¤µ"ÍØBŽ²ˆÊÈU˜TZ¹Ê‰"/ˆª;FXâ•4J ʟšÐ5Pá(ykJzÈpÑ¥A +áX°d%5ë,fœ¸àHÍ’ ’2vâ>ò$948–ê¹£œª×~¤²$ÅNd¶·èkMŽ]× zGºˆ„Õ™ZßÒ= Ž¡Z®Î„|¼Øཙ´·èW‰­v„†OÜ´¹“ 1ì°¹!³ŽÜ€4Ö>tþcÅ4/$j€·‰¯²®t3qe¢MŸàYÓí‚“ A«Æýt ºõ ñÊAþ–cl«ì×ãž²Vhú茌µ5¶k"òÊ?’Ž‘R,ŠYPB+áMSÝzg +óçÃÃõÖ)xuY‘`=±Qμ»ð"s:8¦„æ–ž¤é-JDˆqÂŸË Af#i(5FþˆO=Zúr–ݼA©·3ŽÏÀ°>z!ªÒƒbeAäéh"×Wnå7»D8ùFíÒ‘feòUØ·¼;»X•§l£x’hþ•ãHnMêCñëS†Õ/ÆMžG-ÉÏMÇ ›p¹Ž¾d@Ï6ýC7öìoí46!¼WœÏ†¤ˆ¸Ý•¿Ÿ&Ÿá[×¼tÀ—ôº/šj4D€Ä_I†VGª¬FøX¿þEºÛàCbñYy %Î8º† …™á¬\má`V§|X²[G~PXôA3#Öm“p‰¡tל\µ +üåQ8 æ§ç6@¢¯U.󷈎B`ÓQœˆüëSÂR¤èK‰}F}˜2õ¤uÛ.NbŒÈ4¦„©ÀÊo‰P8Ž@“’³±FC¬SlîeÉù J¨òA=š +ßµ„a³ü)#ÝwiáEó›¿ÆÆÛù.ê ‚Y{JqŽ[×,#—b#YEÎOm ýI¡Ñ•LWì·57»™ì«&æEî7¼(p˜¾9ÁL^åºë& er¼Ê†ÉEÕ)¬yÒoQÖРȈÞH +·œ-)AR’ð˜›9S¥Ä1;þ¼‘ÉaŒgÛ¨fÖL<7 ¡#?l­ˆªö\™˜ü©H¼ €<Ô•Ên‡ÁÊ„Y*ÕÞÏ=ž"‚˜Ýýª`ë ŽØÓœá¥ÓOç<Ü™‡ßÐÅðFtU ÄA‘©':#"OqÞ(îaÍSï$_8¢¶ŽtøFeËÈšÖ‘äȼ3õ-•tó#¹n'mˆ#ÒÕßÆ\–”„ïcƯ˜ ë‘_’ݪ³Ø\·gnŽ?~^%şýUÀBÙùéO U¾Ù½ñn˜eØmMVÑmêÞ,£æ#ÿ…xʜخ:(Ì´9¶\š5µ#Æíþ âò9B+—°@&\§uqËŸÞôà—ÆîNù –‡æÛ2om&÷H7ÞÉb°Òô2"å²¼îždÝíG]ÿYiÕXSÏnûˆ±6oH¯à¦ÒŽÑ? +€R!­z +:9 ÀÝ–àM(@ë#Þ—Q#»ç}ë߶æη(Ú)}îÆ2•*k +ÖWbí"÷p/Å©ãÅ¥HÐÑÜάÐy4 é‹-œ.M2’‚€PØ tZ ˆ1öjî¼×|ÜšÑQŽ"3Ota‰ê¦S:(,P[¤8!¤œ‰Ö<3- XÆÀ˜Ldæè[Œhô{*J ³ºzYØS¿7âØž¼éúévö0«îÍ™¼lʸ¡¢¦õ0r¬ _Çf«¢ŠT” Ò_¢¾†pÝ5DÀÀt/@zðMê‰þ+® ¢Œ¸Œ»¾%éfaSR{áAãÐHÛ×6XU€#/2ÏX™G„¤Xe’=Ú †äsçx@O”÷&VjVB«,0t!a€óaSg—z- ³íT?ìjGäkk  Uvq!»fÕ}ôn¡|—›pt pté®ý*¨{WG¼:ÍM™º¾(O—3.åk|7q!CÖ•‘Éh‡¾jg4{ßgòÀ^åq\óIÌȬº[êeÒOƒ=ˆ\Ÿ7‡>KÔ&ÖÅ/ çB“Êvf’cüb³‰®°íK?tËô–D×{ÌùÁ2&1[ÅÓˆ4¤ŸDÐ’^&ñܾ°<Ö±ˆ"8SÜbÞ"@[ö¸±ÿ6ºBïÉ~pêŒv–£'ÞÕ(â¾móQÌa I +¼Jžk(øµfù¦Äï¢ Ä‘lR é¿Ûjó +Hš¨7B9'Ÿ@ÁzȾ5¯VnŽûÖæAý±{Hq©PïcClü3Ü]æë„‘^zù»ŽŒðh_¹­šW­Ju_ 2¤_úTïý½’‹lG½^>²Jo-.Ñ?¢º½>¦”üVEü Þ+>ââ¤@u`Öù¯‘¶¬}(P„™r«×¸,[SùÂÌ ¸?ø +¸¶.1ÚàDÔ—qc\Ðò.•DÝÔc È4—šáè3œ“`NßÆ€|V+[+³ì¨£1躰×í°Äà‰S¡°ÓÐÇr‹ÕÖB¼¡öø€Ù²µÅ9 9@ÐlšÝûúKº°=¢#áMÈ—QèU~_ySÚ3Þo5ƒŠ)z®©å7‚¼}Ž +íAš‰¬ÄA6ÿl’š×ÿ¢gP¹2€$<3„öy &þi²Ñ¯F]£ßeB©bP:¨~Ê/1Z€ªôKâdLkÕÍðñéšG©“;_,iL 8òè-eK9„k‰d‘I²gÒ†‰…õŸžùãMVJ¹  Nÿ…äàUŒßƒ¹£ÞŠþaE•Š§ý# A郥# ’"çê&Ø’U˾ʹ¶Ï4ˆ>_‚c¥-~dÊÛÔ/«a@YLÌ~ÝôJÇÆ–lÆ„!éx)WOijŠWv0퀦?ß¡Ÿ}Î9Ó½²Ë7œð¨Ø)¨v°7Û‚ÉPRéÂiÉë-+¡½ 7{¦ø:Zxã\ˆS•-ÒL=é/Åh‹^Tû‰…ˆts³Oç·þëšMG–¬þ{×µmìcýÉA±öõšÇ{ðiíŸ+­ñ§æ¹VÀõ±JÓÐlö¸¤÷=¿8S­ÑŸ ŽvÙ¡É `4Ñå}a$¸³ú’½­‘¼éãP퀶ZyH}iÏò4UXDPù]Ÿ³¸Òe†WlR µ{ð(ö<åÊ["8Y zšümå­i6 § ÏâÆät,Msvš2ÃXNŒ´ÒœÕbØU^üöìœÞ$[PwMÇqÆÍ|5;æfbnj‡Ë!Ž–Ä9gîi¬™}Å`sîßïl/¢ì_ÿàx̲e¢c)£òdY(3Ù/|ELËð¡<Ÿ›Z(,ÂÎÍlóŽ>jñZ¡G}#©£¢|#gž·È´NÐÅáN@`ÌÆùà_hN#5”ҾȰ‡ÜQ’ZÎY;¨7²e0íÓ”¼õOÏy€ztŠÁff!cŒZ8" (YÍýÅ/Qpß C¿µå‘"úÀD6°J¬ÕËáë«î[óú«ŸpYXÃEî)™R3Ã;9˜ÙsY×zŽP±Ë°Ÿk1ÏUË>NÓ̱•¡DøÈ +.ÏÙüé÷ O_So©iÓÉ¢ú‘†ËØ’Bì»Éƒ>¾ƒ’7ýƒ\óòhNÇ}7ñËÏ”°>šå%I¾ˆGï$ApÚt„Îùu‹µßÇkÞ¯àrjÁˆ÷—÷éB·s7’êÓlq^=dã„Mô/JÁ¥yWR!{/‡òúÁ _$E •{K +:gÖ+ßPˆË ¡>nàeœƒi1¤Rdnϼ”"9 ËïÙvlE„Cq¬k=Å>C“u=§ª´-‚³íIo¡wˆÈ¥°¯uTºàºM˜Þ€’5¦ÙD½â'i’ÜOÄ QïL]’˜¦óê©ŒY~’RŒ8/Ͳ¸`‹’g—$³å¬*õID¾=)¬»pâWο–”)»{ÐÛî9Ã4b鄱L˜²‰*xS>P —YC'ÁTwŽinÂíØÓéL¶_ú# ÊÞq÷ûäD2JÓ$ '.nTû\;‚ÈP,fo©j„.ÿ8(.*‡ræTÒeõfQ +á² è +¦—üºÏæ»k x°Ú8¨R?²Ë{.·ìÞ‹1á^ÜÒz—nݽêï±ÙñHæ +gŠq=OI]íVã}ø黥}n~µWVüV‚/ô²£hCk:éY/§ÌÄ-‡œoPÙ§‡ÿ΀XCܼ4ìu ‡ˆÉŽ¹ÈO¶>`Æ.‰Œ¥þYÌsl»þGËu9é{>( *IˆÝ³ÿþßµûݪöå“z4¢¾×LYò®KX¢Ëm$´B”ÉÇrÈÅŠÖˆÐYwÔP„A©ýßIä$|%l÷ß™M +=œnÜrŽ›;^NþŠ©Jf¦”ˆË +xÜ®J”dªì&})î­ÉaEC¿5Ô½ð#‚ÆnH%tFQÅ,®ì¨ˆVdŒœïÉ9GŠ$ÀÃøà^ñœÍíÔHøzšÑM¸› že•£WFs öœ<Áhøq`6ç¤öÅ*2å‘(Âãy`¸ƒÓS°GMñ,¢öXyìT%X»ô ¸ãÌý“ˆØ`©x¼vŽ†á¾‘ÓÐ`£+i,çucþÒVNÅÅU“&…9zžN (•8æ 0·qLÑf„î?u6<á‚“3+Ô!c½‚Ò ®¡(¢oa£±©é+#F-/]®r<µå˜â!ï$FïýͲ[O¿ÐþåõÐ3[vz{,«äȼ·ÆR*3(Þ5 d6ï³³€N +qm¡#²4@#B:›ØÍ™›ã£4YK$rˆ | ᙬÿ1Љ¬?·<ÙŒWL|Q¤L¹Oª­ rŽÖP¿Ì_Á+JÌïj#EËzãñÓoTG¢ƒɈiD8ÍyÓy‘L.Çv¿XÒº}zfÆD³ço£6Oµ>5'ÏШƒK‚é;Âæ0'·.LüoaÏu£\CWÒ¦¾oèq0ƆhygÄ¢üÞ“`>fÒI?¤7x´g9ª-c¹ê½' N÷· +Òð± ÄRÅ—¥JÆWÊ:»þöwÆ€#΀ž\™|p—–þíXEç¬áÀõºÀ²+ú üÀÃM¡Y;‚dRÞ¥ [q*K¤ã‚gµÜ›J3}zÒЖÆMEvž¿Ø t¸äU£gB×n&ÖZIíÝî˜yCh-ÕbtqݽeC\b±ãÁs&«TöoÙùW_ +#Oî8{ ( Ý&û—–ù3òxþâkN +ÇG½-²¯|ÚS«<Ûep‘Í0²¾A´øX¢Û•ÇØN¡ÎP€°uÄõÙòÆш¾öaR>gÞí…`šõušÊ–êYÛÅÊ>dJ±WN3ú['F‚˜/ÕFùQ‡Š¸çRi:\zͳ¯ÞÛmVƒnj±¨‹ ðëÜqà Í3e<À¡$u`¢â²dÓ@Á®ð9«³Í‚îÌŽê¹ìÐIÂprR6ò¿d¥\¯¾þ¾úÑÍèg”/D3iLªA@^R=¢µnÞ´noB‰PE‚ð\vÒ:ÿ"ÚäÎ4kõl³t/ap|‚”qI‡I, Çg¦èBñ¢ŸbꪾƒLŽ_w†¼&¨Cú§áÍ!£cÉ@Ng.F¢ i7†³†xq“\øn‘fÝn·:ÓÂRêAýé/pÚ×=”:ÊŸÜ~9¾8o½›,Ì:Õ¨”n`f×…®{BS1iŽ[yœ„Ì…Ðda“C0ëÅá»Ý‚Îo~uû¡.ï¼ïŠªÎ&;ͺžßÁüjLoÙ j…®`ç3먇¢=†LzèjÅ‹¬£·ÏðlkëŠMÞŠ4à:J•±k Îö=Ýâ™Òñ7½(ùÓÇæáöœjîðß56WE@/¶ŸroÇ0 ÚYºû7¤¾±ÆÂz——d@yŽæ¨†œBÿv¡ã]¼ëN{]F/hWcTmxÇ@»Kƒ•ü5Q”¤Ÿ|B"—]ºw…ïí|X½]kIÞ®ái‚„TÈE +ñÛ×a㹆/˜9- ÉÞ[Š¨X|m!ÕcWv(|ØxX÷©—\ÂÑÝë„ãaa¤\(T kNûZ“¡³62ê Åýûw‰eZ¬ÂMèq †Ú$ü­ìhð.ù1ÚåkDºÂgî‰x˜7¯½?À‰Vàûî%nä=ô¥ãör¢ÿk—Ò“aÑ×¾úÓCýÇžnì2‰rV¾¿—,ÜVˆ3ìÌ‹Ž`öB¡VÐÕÊw€ûfœ ÷¯éPÒâùpp…ur©ÌæpPøšûˆ‰Å)Û^‹S5à2Ó´4zˆë[©ª£nÒýÙ¾þ¹ÿt¯qoГ^]îÑO²Y†1£#~oY +Bæêx§H Ž‘W‚f¾ß+¡EîUÄÎȧ*Ù-¦Ó$âð—D¤„¹ÈóMJ +GXiQ‰ÜŸ…‰F‰[¦b‹9/|×1\hÅ\¹UÖ rrhZ¹„Lt»]íA=¤x¡…¦}`°œ]RùoQ—¿Á'%ÑšÖ¼µŠøš*;F«ÀåÈ©ÐÞO ä zÎç£kÀ-Ã%»’UΈÿÏǘäuSC”¶ÚÉÎ=kKçë=‹[®ÅS3Vo^XtÐ9ni-›BÝ¡jh÷\Ÿ—eãwi$ƵäA(ÓðMθV´ï í«-%eÄšoyhá%ÏM3¥—”¤E8¡5ů"÷Ï)Q€ºÍ¿Ž¢Yžèel% SñÏ&mL¹6j ʾ·0*˜íüjìªB@ÔhÀlæé$"ÀµÉ?eÑ|ÞÈŽ;¸(1«ô›« +y˜ê­¬»L×xšP8cKcXv3ù[šRÐ;i“ödÀ—¹îü$¨ÛŽÊÆ'DT­“ ÑÇ°Q³œw¿ˆ*óÒÞ`<°„Ðh¸í`ÎOe÷Ʋ^•gÙò‡P¼³|ðÖæk‰CDv?´L¨'RhCY.ß΂#E&SŸO²^M±¡êO”ýÃé]Ú ôCoœ¡¾Ù‹®;[Ól_¯VÐ/Ë’Zíþþaë+Èm +¿;v09bÙýµI½bÄíYW°Q.£ÅÂÑ÷¢Â0$•&±ž +ö°D»‹ûϪj¤êøúý¼ƒ¶’¡Ý@õ,™‘waGîü³n¸kóX8ZTb§-šQjöíR=–ôzâ Ïyù_»oVVÈžm£­vE“å¸Y”£Y™pùíb@|µþ—Qߤ<Å݉w3½AÙ±éGœvbKµ +²Òw°MØ9ÁÓíHnD^ÛeL WàŠFÙôïDfŒ)ý£{îZØl(ï¾þw0ÿ-[†vÁpç²Ú’~ÉŽòܲ´GtƒÊß ¹§Ñs/dm‰–Á`=R¨½6i‚ k÷Aíg&åŠu3ðÂ54=ûÆHÁPMsÕ 7‹¥BÐR÷ôÂh&ˆ˜—G†Î©Oïõj%VHÍÇüzèndQŒÕü­—Yƒî¦O³1à¯;íºéýF'X@hy³`^ui8§‰ìº¾ºé¬Aqó± N-Ëuz?d¶oØ‚õwMă¦WFAã¾—¼<ã"kÅUéZ槧 ®kPü.•ª+²Ÿ^i´­žUôð|>Tè3 ZSH³‰ ŸÑT¡Î‚š~ú–>… +žtú²WT»CÏlsÉDá6M—Ùyå̪s†pg%ó¶áŸVµ[¼W`1}ÏbLÚ…ØpÈ÷þtÁvÃ`ÎMž„;SD¶¬¤@D© §»µ¥³™Z/˦fÓ=Ø`ÞRØ„}=Âõó¹ ¢ƒÀÐ{‡E·'ØæTÛ°ÜT åó—/o<HNºÚ„|ë}»"Âý_L<Î'ëñ¦Õ*ž"ö»åFÏ]iú¼aÉ•Pè”A¾Çâ@ÈßØUz*«a˜˜\!×Oé}˜Å6Ý>bM¸ÊØ·BÜ\åñø«­š>’úpȇÀ@3°Àü\&ï¤bAï‹…FÍ'¾{­ÒäßõÂ4NñDj{"i½lÌЊJ"õ†wÓÚKGi‰ÌŽ9ïK&Û"¹Œ?Àze½Æ’Ù#¤¨¾´·Õ—^šø¨{Ã>Þá|¥Šÿü3ZÉæqÓTP FIk#m»i7©:/ˆPC$(ºw¯7}Þã»[Á†0C={ꬂ )Ù ®|3­ðC+w|cVÑó¸;½î2‰_6× ]áéÑ#AþòþŽŽná“ùNÆ’"Þ×®R1óÓàH3ç^)ÏU»ØÝ–fš‘bÒnÈ\—Àk;ªÉ‡î?êš +X#švãpd ~=\Oüœ $x8 cƈђ9gaáÍwéÇ›Ke¤ÑX+&ËÞBˆQ{­ræoÇè‰ò±g(Ð,í.?±¼3J2 ŒfnÔTûÃñku•¤]rä°EušdRyµGVKž˜¢+À̈ØÚ@å«”H+'yøþU —@0´*ªÍs¼=q¥X¨¨ÕÈ‹Äïв ©gäq[S$‘th +Y† Ð¬Ýe²9ÉÌÀ´RòÈ6gwIŒÌœx›`ós.8>Ñõ¸VºítrÞ»òå?“êe¤§…}8œËEx]3_<±¸4±©úỚ†ûéȲ ­ ŒwùȳˆÜ¿dðè€ÉÕ€VEK¸ºr_}œÒ¶:¡´h/µkAî["}Æüo¯J·íê¬T ’ÖHêpÄ­ëTšÔâÙéäƒæuÔeÂÏEÍq1³O2]´”ò£[¥õ©=šË•§vÅ0†ghïù +©^a ÑꮸJJÐ0óUô"jí@_>¾©‚rᯋ Îü¹‰ñÌy +Œ)Aƒ´B¿Ú[µ±Rz“ÖuFïÈ]‰¿³ã–Çâ‘W»‘ÆP¸3÷!8b##í6aëTã•_¹¬èŠjhaM)˜©ñdÿ×:¬ÝX÷]kï¡wß5o¦2µÑãaú°–gr`nÂ=ä|_÷ö';Ol^1xҮˠåš66ÖVÛ©­£UGªà lõ¹¬Ø†5¨ÙtNµ{D Šá}UºÎˆ¿‘IFc£¤åL~ÎKEaå(g’ änx5(îæ]h·‹9 +6—Þ`zßþp…¯LZ”ÃPÔ A”óVò?ÿ\§Xm<¢G¾Âë{ÇYãI~¦{À5I¤|ôýo| ê—7€n³Ýh䢄š¯eˆø)>Ã{it<»éš^íR6» AÑŸ>?#†ý ä9¨å9\#⨳i…M£MöyzÚ•lŠ1µfaye8&‰Qzœ'ú‹¤ (»%Ë6g³yf67¢p,]H⣜8Z +Í·n6>øVÕR¢iŠÉ¥l©&Sm)äRèC# K}r&Dá.GVÔ6{ùñ(øåÌy¼“J²çÅ 1è.N¼ESûóŸäL#ïNѾ¬–{¯M»3…b…Úç¨öíAQT>öÐÿÕo ù)„è qð‘.OÓ¾Ø2ʸ/ÍJÉózŠðóï÷PÀ‰ìñÇÔé=ÌÃqxôäØ#÷f–ÕÿRb ¼m ÊT„Œï^’,O£RÈ…³w×æmµpÆÞ~»[ðêä2=´(PHâß‚ìÆÊçÎœ=?ˆÆ"S$œž& FÜ£l¡î0Öt›¡ð¹ìXJÆ6ˆÕ¨¸dn)‚y;õ8”'çí9õÙÑyeé­? Þ¦4è­Ù5è¿€.Û UJë ¬åÒµgJ*ö}þCD¿QËÓ§öÆ~ìþ] Š­WH± x­éÔ÷(ˆœr"àŸòØ|Þcïƒ>V*´ýý±ãyµ@¶ýÑöþdßÿ²£ŽG‡ìtf6‘mÕšž‹ì£ÓÈG6ÐD²,~CìÔ›ðÑÐE6 ú¢ðÄZ.ÈM@~q¼w‚;™ö| +ôÌõnÛ8@[i©ÚÇçk1@BzçŠCeXL EîxL¡ ÊrœLf»Ý° ÿ²ÈÅź²… Â™Z.¸^ óàµ'P3UÖÌîÂy‘¸ÉŠ–×Ø‚ƒÝ•!ì(Û9õJú bõ(l®da‡ÄsÕ#—­¦ä$Œ¤¾¼R;ÔǤ3 Î+éóUyMÌðû¦’Àb;ú$ªh1U±o±¾‰@¬á¨M‰D7Pמék'›á®ëCØ~N6î±}®aäçÓ½tÙÞ•xÎöIA/&ƒ´}Í&W µ7rÛöÁÛNûQÜžÐÜN7Öí¢§q·Ox)àgòv¨ÂãßÛgUneß.±àêô”`B+ÃØXÆÖn·É“ +Ã)FxÁæþÖïzX©ã€Ùþã uÕ‹Œÿ±E*«=8¥ÿx­ ¼1@<ø‚"Ý;*Ð §r¤jµ¦LLÔDyŠ E”}“ÐêáãB_õm"†u¤çF8MÃ@ÁÝAö‡n±½¸LÄT0ØÞw&×SÖ@Ÿpy¾‹*wqaÛÃ&?|2Kæ®v2A6èçG +ÊãiŒ³¸”ß²±ˆ¢® È^° añe–W&}GW7¯ Cºû³_` ÀC@]W`€5˜¢ˆ ¬Ók†Ê ’KÆwÏAA&rÿýcغñ±Œ_ ЗƒÓß’(¼ÎÛ {ënEÄ´¡º}"®!øη {(°h€ÖùnÇBîp @#?TŠú»î^ü‹Î÷ûdtÉòè}žeÙ.KÜ;úÈ Š~¹”ØÐÒù"ZÝë“j±AÍÖ¯:ÁO?ƒ³H¼qVDmÛ ” 3=¥Â£­ÞÁÜþÓ&+„\TeƒÞü„¾Yé +ƒIà ߓæì6m6€ *z·D^•“%¯Bp–dд€a·t’‘ê¼×e#yå1a¹#C^…ëLiÐMÃÁ:ƒ¾ZÙ~iP°>ìñ´WW#èšRš*¡Â pÄÙ;”{æ44'‘sW;ÜŽ’p€0ˆjÍ¥ ¬jTš×pÙCè¤/ +;m@0&þ9À|!ª½_‚½„‘ x=þQøÈeÙŒy™Ðöšñ©[½Ì‘OèPJ¥›ÕªÁÇEC As¸ˆ Á,ëªiõd€ò´ñïCOÊ‹~ ©16À…ø/9!”ZU<÷c:¤ +Šÿ\žo–Ü&"/ÄÜ<6Fy¸ µÛ¶Î¢E¬’ "…µ‚™yÕ±Á±¾?†ä»ÕÛ€)rýUhU8+9=ù£»ø*ìmþßâaáòíûg%9³Q©ß< G°Í×1”«í `¤%R üÆ7wäÒBõŽÑMMFL’°#¯Š°ôl:º‚s!fDæ sRzä—¿¢† `Š×BCÎW°.·LÑülPíö®}´}Öõ„dÐTÜa‹ûC÷—)DÑäi/NAÜÒínòò’¿VúY˜ëiù¦#¬R‘N¬Fb„µÛb—ê'ò‹0*óÉ€ŠAµiœ÷'þrW2­kâÊ%Ô¨w;@Ê×ÆŠMY2â<À³UD2Ù×Õx¹Dl¯?bÎ{Â!Àhis’‰x\OQ¹OSâT–Ð'‘Eâj7“íoEÊy°°¤| +9•’19Ñ2ƒŒ ¤q!ãˆ1–Í;¡°`)¼„dâ +–Zõx‰zìzû[45ÈYÏØ2"mq‡™ ËB*.óÖ`úî¨EH5”OÄí$6ô¤ +úš¯$;kVß`äò‹ˆì(>NÒrŠ­œÉpÄ-êä;û›8·$ÃËê‘OÛrÓÝèR¬ +âŸ"ÅV(ûª½Ê–+eî-àM´·á/Ûgþ˜_Þ…ë‰ +ú\‹f‰¢8ÖhÙ¥eÌ„…G{|‰þ+ÌÀ”HЗ<µ0MœL%ìM·¾1 :ƒ$óTZ;L®Nùí!ß(ìÝAS.Œä€…šÞ8e'Ö®ž¤RB­34"`(høŒ +½ð.ØI™CÕ%TÖ{283Ä+\ ˜sÅèD:‰>…™Ìú#¨”±’òÄæ½:ÕÚ„Óhh µêeH¿þù~Õyª2VÁ›4Ä"…Ä1ÕeXøµÞéÀa'íè:óÜj‹çˆ@qõp%ñ¬QO?²xjˆdðC`v¬<7òl•[™úlþ-3ÁX ð9*=Õm‹5Q:tÀŸ=§§’$wÿR<:·±ÎÉWoanà0V(ÀÂ4«t]Ûd’l¡è-Yæ„ êô4g£¥ðâËèÜ6 —fñ©œRêÆù¿Ç»lñsî@<s«oè¢ò¥èMøÔ‚œŸF©"ޙ톬“Yd>œ£"›î~‚ä© +bÇt­ ˆûèV6muÀQ!Õoç +I·°(­¡æ”jYawU.¬æj+u .¡,ণR Øå™Òƒï(åíh„B“´ýd¡ºŠ@NÉÁ)­eóÓ  Di6a‰3™Š¡· <T#¦Çë¨LÛdS¥‡ðYw$D*!,ç\†Àˆ‰®&\˜dªæZ@n)ÎОþ,$J—Áq¾UÐÈ ‘8"â—¯že_ñFUøí°4G3èÀBˆ eTo|B„<‹Uøþ0‹ryo!Ï3TÕ M)r’vTv•º‡íƒyuñ9¹ª`"^qðtÌsŠp¾?þþMñ\ +BÊDÔm¡rc{US29MÜ2§Â’*Ú≚+eJŠ4tÈÖôZH™QÖY ÿ… ÿ©†ƒ‰ý@‰¾—E½7A’$®Š¡÷”9(<·-r2;RïóÞ¬~s™b…Ì îÏ{\t•V¯•ĹZçòO†0²±¹sÈ!DÇw•›Ðn +ähÖ(W÷‡r›û<:9ÌcÄ—(µÍ ùœ>À” N˜Ð\*TøÔ 9¦ÓHeÐ@$6‡óA/ +]û” ˜óe;à T0NL<®8d"à®êŒŠ€äMž0!Aˆ7d¤Næ`jOsœ:÷ix²vSP‘Èê4-ï;a+ÿ":×FhQP‰ª1Ua=Sj:Ä8¢Ðið s§1Ã+C8¿eòoFܱ€$¥5Èudr€Ó:NHƒ ¨¨³\ÎÎíŠòÊ"asW Ü gá!#mê@•5µ‡Ž(Id_᪙Î5…Ô½CÔ#©o-•%4{jåò½ˆTÉ™ÇÍ£á4½1’ââ™ÞUÃ:Å Õó|ÁË`dpÀ†òòºü+V#&jYH‹X†/²WRí=KÛó),©51ÉT”»tMZ5Ä'Ö™N;ø}–œÃðÌ:¥ARï„:ï°š–„.®òd÷V5é[*/™¢çÍIk1§å~'{ÃÀÂŒÁý1±£ûª©j\UvîäÞ¶ÊyÓÓ<ƒßØJy+û©íZ›!œ:_„ˆèÍ“Œ©Á]|My›Š2„äÂ]lHTüžÅþIýç'¤ap ›]4»ªbY ´—˜^&—Ô'©2(»|Sòpw|Wò]Ã50`׬LÆŠçê&w“°Z¦¤„Ô )‰,ãá€ÈðOk¾’$c-Èàß*îOG:ÝŠ@’ˈ¤˜ÀI «g”M‚$ÿx5*6«‘é#ÚÌC¡¨¬vLQ뛘‡)Vk•»f©é ~€ÆJaèœm”«4q°5¾ò—¤Ðœõ#B˜ÔsJ^ú8á39kõÙqÃ6m5Z²bDŒó¾õ#ýkÄ&Î kl±Óž)ˆ ¾ùß6ˆ\-‡ÒÄlÏr”;`Á_nëg]Œ2¡)"ÑVï.E¶7UÒ½öÌA âÌ2ØÄónçR°ÏÆ#Š:ÜpŽA +<“˜Dä.\L¡ÐqÄi#ƒ€ö`„rnªiu§2ñäØÚ€‹Ú®“:†èYœÞøŒˆ¶ñ¨ô—ÁÊ”2ªˆ¢Å¢ JôˆÒ1„?f1Å—ÎÈ J·`)öe¼†»éubµRÏø'Un×8ìÏTѺQD¼Äø´áÊœ»§ºlXäZµô>6Ûs–õÄÊz èþN¢•I·KéÙz¦Bj"B½Ø0!ßö#'JTùåÙ(qVjÅ ó‰ÌêYŠ Âîʹ&e=šü…¢ÑnÂn€æCË}<Fi–þ|ý‚¸Öµ¡_°¤…‰©¡"œ†Þƒ +Ö-þØvlnO¬ÇD‘nøQl¹î¿¾¥-ºxã/:!¹ý-ø‹šIÞ^ +Gæs©øDKm ‡9€(6%C‚¬ÉÒ÷ ,^$~é…UÌVc¬0&¾d'ZHB¥SL)/dÖŠÓŽŸMX¬4—ª¸1BOÙH-NZo}Î8 jÒiˆ\§>>M/ [E ¨A˜,º_m«ÑGÏk\-“ +ðÊš3 ƒxÍZ3lMª+ò`ÆA—Ø1 FÑ\{xmŸŠøËÞ›­`ŽÔËõ8÷S¾7øMì }„›7;¢¸¢9ùÜ? úú +>1£|à[P"íÑq÷·V¡Ô}Ì›X…0Û ¯òû|ÇRöS‹Jv9ñòX„¸UCÕn{—h¦ªZæ]ØO–‚eguÁ㆑ÊÊøXÁðýO•[(0²4¢žw—É€°_\ˆIŸ†÷’¼ê.´‘Ø'i9µ†“Ï(‡/«ü¨Tw§Þ nJpy““*vÊZûn¬ÏÕ%ЋÄ|?Û;¡Áµë¾ wj£Òš‘Óa™Q¦JñÁ¯ª­L¡œ«ždëý+ð(µò§T’ׂžKÿR_¶ãCŠ;O£÷mmVNÅvÑôz7q®Ý»4ߌdùŽ*@µ ™ãGJ1ý¸Þ’Jçu% \©»¼§Š ã¯>öÏ´ wº¤\±ø|á¾Ñ Ø%ô-ÕN’Ý W›PÄ3ȾÊ4¼ì¾îÞ*f$¾½0ÞûuîË›‡„L»u”C4D9éÀÝ/àa%à€Q4Ål‹ :2qÄضð…fm]Èðû•º {§¯Ø=» {a¼Êh”È$A[~fþ Ååb½‚ñz÷Jä<ߟkË« ÜÒ@ïä#ó—l¼Ý§8¸ "{5â \=÷ö€Êw.[`Ȭ„û guN£"ð2š  ìHØÖŸ²L¡ˆºœIç7–çÈ­ðyZÃ:Ùµ{'ûšÄCe¤Ôcn¸}†c±¹ÉCÎP?ùËB†ôÒ :»× üuúnK’—g„Æ $ʯúØ}UF‘¾ZŒàÛûë0û%Ï$V!pw¦>‰ôa™ìm>%ű@KÚJœºË:¶¶)á3ô*M–÷U½ÞSbK2á<øHAÙÿ}t˽ËÓ}?d¼ZoTk®tømáå$sÈõâ^kÜQ]â8?º›Q&«%‡×UpCþ-cPz`FØeï‡ÿ0´a²7ÅJ€«PoÌ µ‘ÆÄŠ~3x”Woð\‚ú2^|à5ǵmCåYrôR‹ Ïk \ØÒîÞÁ×P3Êò‡çó8t¬?Ô7„7È>ç[çõ&3Ig.zU-Á\YDvÔŠéÊs&^-%½;ì˜HsŽ”³]ó L¶àð? ‹k¸‰íÔ£ Hã±4ôM®¨•·ö3ÊlÈnÛåy>n³:P¶¦„Ì׸‰ÔÇÒ~¡'©Ã?ÛŒÖX{ÏÇÛ0K}m~ÒÐ\šÎ)èÌ¥M!3Ð]@n$j‡dý4A•|ÕàPÅš{hIšÅ*‘î‰Ç’• IJ1ÊD\ ƒ'¡>›f- cyÅ»˜(áf¬6«ƒL7© ]Ll¯ùÌ$L1Ê÷½¬MäùXž¼<©>çH8‹XÜ„îOñ‰’`…ÏþQëËW‘ ª›vÍú*û4Û¸WlQ%`c¥·"»Þ¿=ÀÛp0€º¶ÿÑÉ•˜0Fä*®Á;?à¡qB1Š È+=2Ùy•ÖC2µ’© Q¼¬ú“‹dUǬíO ûbyrr‰Íˆ¸˜KeôÄÅø1±(¢‚îðËáÖÊÉâdrì®,Ãs‹qî|~(³êBWÔë,ƒ b†»’!E- •2<Ÿ˜V馽œtbJ½”ŒÎŽ4ÉJR !eGbÒf­ìmgÁÊâ}æ`¢²ª$²VäÎúûŸ‘»%×Þ`#û‰­M–øឈÈ W´+ŽTbÒ@Þôâý;J Fú°hñ-V‹Û XhGÃA[~a.Á×|#'îßB@s@ŒŸ\k&@o¸<É¡^ŠA’gŽXûÙ³$¾of°‰·¤°æuȾ‹ƒA­Œ5Ì5ØÕtágó[ÍÛ|Jõå‹_ü¨+,9ú]Ó‚¡×ºÀ#n§K°8·Z¬šËa¢ÍÙX-:ô¢xWN8¥Ûó(¿­'©rPkõ•w ig'ôí>Š@Š©”ÂÌa~$T;öZìCº‚ÑMŽŽÅíŸâiF£À#dcXîà«Õ›QnÙl7©­¢`W_`’^jFÐÞÀ$¶áÂqTî½)Ýd ±Ó°¡—¸±(˜É*ß.Ìêò$7¥ü†’Áj½l›³Y©—@|£¡ r TŒnLgÛh–™(ÎLOvùÿQ ×»^ÀMÈB†vÉ›T;>EÌ×prá^8–¯0Àµ¼>„ î_Ç—GûÒ.G(p÷¢Ð—æíP + exº?øÝßP¶j0:D¼Wâx­Ø)U(6`ZÕ¦iÍ*¼3PˆÃÐ6‰åÙcRêö#õ`/ýï«ÕÝ=®Lîf¼fŒ`O.@W»zÚüƒp »ÞgòÔ¡É:¶ÿÒPÃ}ìB‘jh¼’?›´íž(‰0üé ññ¼’u'‘Ôí¯ê ªò«H««ò„„‰öNpÉ6®ǯ£#ªèü°sQB≄ça¶×ǹ ­I÷cvî‰&†öÌ…˜Ù`#Xˆaòg¦V7ä>m·Ä§Å:lš]`JJµs# ¦È÷™kd' „Ž˜GŒ<AÑ9$cf´a³ó ›k²þmö¤U冣l^ë„Ѷ_?vuäàÄ9lâ ÈQÀ$@âh´0ÃØTâá€|©Ö?DÆΛ¿ñÖE~sR=ÉôPŒ½Û KŠùL§þÌ]Ä©FUz‚a*mA1ûdïî©™l¬ïˆa$;0$»ô6ci`ø刱!äô²…9Î^Ü(ã5Ò1èûÂ`¯p·£0äÄt>ª?îp¢?$x†÷é:/o*¢dÔþ_‡l÷à=EÖΪ²ÎÄa… ®oìG4žÿv>3* ùÇ*Êžâwi4é&R€trû))â=$_XˆnÓ7Wqˆk,VP³•Ñ6G‹åœES&­‡z̆72þ®rŽ·p!³»|lÁ—òr¦Øg1{bu ¸ß‹tr{Œ —&ÿ¥ñ¢¶ˆ øwxTRÑXj攡·nzµˆ'†5åö“ ‰;ζM#‚2±}ä:Â)Âc…Ô}àgÃÊ@ç2Õ~¢:lK´3?j¸’å— Ô@ŒU$ù÷®Ì1Æ´vYÍÔdÇGJK~Ê]¯³ií +zï_T¾WØûa<¡#Ø +ìEŸ\1¬ÉíØ·)Ð/ŽŒèæú±²¨šÄFì§ÕDšªì…o!îçà–Kä™{#aa0UA²¥?Ëç è“#öA…Xy»üœi½'1)ñh«òòûé/ÏÀIÙ0D +Ý,"Œ7~í'©ßrïwC¤0¯ÞUR*Ã,G<"éØvrŽ%£±ÜÀ}>L¨T¦@ÁˆNÔÇüìLír'4‹F8ÖÍd#üñ“ O~Íp¼xŠ9«{pVu^”ãoAÏŒ¢ôçI t¤Yn‘nX¦ŸMþ—%”TÀÛ![Á\tdñç!^1UŸÓð ‘µôÿsÊ–ŸÌH&è–Ï—xøÑHeSË ”óÑbÅÊ1¡w`pid¢b^/]ôa!q˜•ó>°ì;ÅïÐ8å3ÙNz mw!p8Á†¨¯æ¯%˜ß}öæ_èñ2 ¥%Ÿ£ˆF2!Ž_úƒü·}}¢>‹+ +Ã$½}k@à:ðx}r #Ø ¨\Ã)íÉaí\ÇU¯~ÊW½Zí'>)Œ]%°óhª)÷"mb¼ÑFU…§ ÔÑÅñ†?ÃWL ìÔã~râ4}ðï­ç)sÉ“w>8%WgÇDSq´™Ðw³9Çó+BzHç.´ÿ‹©®Mo=üÎ%CÖ¯ÊñÓ÷èÍl:ôi@„»ô¦%¤›:t{wµq½®àÐ|œa?üQÒtp"ÃLx—6Pz¥ABÈ,”n:§"†èsý¨Åž€ëNê°{çc H\AÝ®,Ý8<˜à,æXûiغÌÉ3y$f$òr ¨Ieˆ%&ïbÐ;™ÀΣÇvÝábSØ‘Ý}ã`…>Š„I.Ç6 _AªcÅ’kÛAºs£3xZH2/a¸Ó˜Í5u%ú!¾…y¯µ¸+ÈÅo‰åj/æ>· UöÌóÙc×ÃÏ Ù®{LPêˆ[‹¾kSíA…AÀ^¯®‹E +[ù +EéHñ~0¸ôßÛCËI4ИÍd@¨Á5&+&v;ú®£ýbë9»¸8Í×ÿ¡7&¾„((Å5rê&솱eЂ1÷`ÛÓ$/P[Ñóô¤£Ž¾ÙË¥i‚»ñ9/‰¬'yóà-.¸006öÔÕ· ùãq 7c«¯^,‹ŸóLÿÞ Œ[¼dº”ÌK—² J,B̈e3³¾›•GÀ®´qÛ_Å™FÅ‹ýÅéíc¨ pÜCAÒ˜·§ÂoÎ:šX»`ÈöN¯îdºá”@[pï9[zœtlÔ@ˆÉk´z¿Ác·tNM§Š¿Y+e³FF h1µ­Ù +3F×Í¼í·‹óèšÌû+2= {mLècõc2ñ£ç³UèA)ƒƒtJ">f:SõrKÆϧ4è¡­)K“yÖ/ÕõÛæÌ⌎ä YžÌG³þ•ÿCÖŠÌ€%¨A¦A¾žÃŽENW€îyýˆ†$sº’â§H‹;؃ҿ‚“C—ÍN¹S +MO€Ð¿Œ™]sÙ+qW}å?r©Z›2³£ZlöœvÔ~œÁT®”}'Z»P½†“›r³Ò4Ÿ\n-æň.²éL1! +ê:œK·^'!ÑŠLCôkó¡õï,¦9Ê{ÞÛšl¶ýÜŠð+ Ÿ}¹Ånû¿G ÒžK=rb·WsM0,-„«Ûp5X„cÁ´jL¯x˜‘u2ƒuŽÉ€oˆÍ–â6NÅtò›çÛSÿuùÐ7ß­£ÎÅÓ4qÇy\N>½þ«Îõ8VÐz-ûÔ²N:ë/ï­Ù(Y®!{³³dBÕŸ€Zdº6˜•îbBß2Ì5ØN ñà<[f„¬Ðuj•óÈQËÛ¡‰5œnÓùhd:\ JAµ²‹ ëÚFËrñ ò/#å2#ÄM)‚<¡ƒŸÁÉŒ*TjÏ`*J—@Åž€¸™­œÿ¡)WN÷K‹Ñ"•àn`©—›Œ¨­ë>ê×Ù†« r×^™éÒù<¦Ÿ¥Œ¶JñŒ)Ðx$­e‡_µíÞ$8äý†¹ò¢aâjÅŸw([ØóìÄ—ýhJC8,¥Á!EÚ@ÜaúA$_ߤhÇÈÂðŒm(+YÎzyã^!ä}†ßCáLÜ`&Zû^n6b,%¹¯pUv’ñ—ÌìuVËUi%'øŽ·CµP¶øÉaªþ‰Ì:˜×`Mb&Lô'æá¥IÂkk yY&ânráõ W tXvÀØK‹ÅºGïðDI7ƒOtµ1–çËKyLæéP`¹fº~ðz|t¾ÁžqV( ÒjIa(1fcFªqÔ +˜á¼¼•îðI—ìvÈâ€ü%ÃÅ›®&§•¡—˜`Ù@,V\÷ÚžΞGÀl7¡û3O«_\ˆPam~+øé‡[ l Ìî7ý'+$ƒ®õwÿ€GöG¸×“ðN‹½N ð«î³ IÜ 7cš\¢N&h±v¦(Ú©±v õn»#¿õ‘Fà áÖ³´°™m‹™Á ÎénZ¤W9¯ÆÓßP÷¥àký’ìŸE1žýd¨þ¯”÷²ñÓ´Õ¯:€Ñ€ò^S#‹Ÿp<ˆ®13í”ÃzÚøÉyÞáÍ †|´„0ÏÉòé¾ý0B¼íô-§Næì[\DaÁE÷Z}½²2Ÿæ‚0§‚5Ù,ßú!¯ý4%縸‰M¦A·»”, 1šŠ. +ò˜°~™­ä¸:¯Î¿M þŒò$+„¸s +ô˜÷gA!sžÈűžkÖ=ת@–àä½¼S8é¨{©?÷„‚†„  )LÔ²b‚œzšL— K’Ðs!^ËB :Ìõ‹ït€à`Ú ï%”±kƒrͯ(¡xœFg•HOÚ ŠÃPZÎëðc²Ä‡Nü^8r'4$–ÌäÔ½4¾Òm,O\È€)MNœÚXú˜UþÍ8±-ƒ ŠöúÁ è…w¤ÀÅžYDà™†ð?[o»¹§eKVú/¸¢ÒVª™JeT@Vª6V}'.ºÙ2 /œµ”T™:w8 b…¦e1^Ý ¸R¿ªñâŠ5°±€†¦~&å†îÏ0Í ö¥¢%ú¨@4sLêëNûKÇ{N«ë'78Lß>SàiÇË·—Â+®)ñT–ó‰YúM²Þ³&I=îäv\Æà{+ð£§T³éõüªìBŽ º–ƒ²Œ+Ñbþ*À|X9Œç%¶ŽQaØvÛKáq N*±¦¡H'æ,‡à™™¾U¨9‰qít¤7z!U÷ÆÑP‡Q~,Ã.¡ã-Ô˜TüÎ;—pW2+÷À¿xPÏ~„ÓPdYDóö2iÒš«;Ív¼ ahÀ̦´åñ7±CæZm… +ÌÙzó—WZ̹ôÿQe™îJïã䆂nÛ%4"0?µ²O’°@o^jÝ]^Pz€Š×?9™ñGX #ÀÇÝÚöuã§Ë)[± +Âìñ;oÂBNlxSÀ7SöFø ” Yåþâ)B8…´º‘žÏ%üïŽ'…CÍ/9@“u!«§Epšæ——–saèúéèºðrp×­Y$ÞÇ°’¿¬õ×O®gãwD*ŸÂC"u¬Wë2'=‹j˜³:Û+U囲:;QÈ…rNÅ(GPê&Ší`±m<„ã¤ýaɪï9è {š¨Žð£öÜÓÖdçZµ¹šô¶Íñ‡ÛµºìiCµ'Þ³ƒí›á¦Ú¹É°+™‚NñØš65ÀÿbhÑ#çB‹Ž…”é +$æ)£&–6ò,5ª Nö¨vï=*GÕžA¿xüšÐœñ„‡±×3åKÔxýÊû_‹Tr!?Ö…Ðí•¡ZZƒCßc¬}F~ÜnÿljŒôÀ1B»ò“¦~©•Ì·¶2¶ˆGu’,sÿ«–tJD¸âÒP¿jELK)ÔŸrŠx!­GZú5™ÂÃtäÆ…VQʼÀ 3¸‡.(·[Щ‘m6þJ§Œ±He”ƒß%ø Sv+~ÏS#°Œ¿˜©›„ø¯Æðý\AÄj„†óC‘Ü-o4W<ßn¤zJh«Bõ&åZY6÷½Ub3R¯ypÀõ^¹OSŒþ—eîÓFÕg?¯aŒnn `\èw“³aºká©ü÷ãè^Ø·í²ÄIÁaP¤Å+ʃÎ_\µ»%ÒHk#‡^3’»b°Žòm5.?pˆMtÄÝ•H{¼5U:ú`ôL«mtQOôÑí6+hvEãà-ÑÖxði‰"„ÊŒM˜ÙXŽÝý;ëcZç+¡2í>³AG +ò²ß|!ƒFÛ â†Î@òòƒ@_ÝCŽ±@®[æ¨*”]Ë1‡y ˆ9&QÊæÖÆR-sÙ™Ðpñxll•-…Äy"ÇF.Œ_SeFM ‡‡D6d!€8f¤J½·ß%hã)ÖŠ5qÅ‚¸Ü‰¡Éž¦È[NÑ»ª:jÑAÈÈÔð¼½:܆çL[ `ÑQdzÁÆ…:h­9KƒöŽ9¼`T™¥A¢õÿYÈ*Û £¾i¼RŒš˜d+ª q­ÓáŠûçnϧDBG Ü•¾amK%Û ™×ô7Cµ¿Ép¢=Ö !ž„4ºí'Ý2KÍ«ž¦Ìüo¦Ë©¸Âº˜+á‚7¢Á¨ƒŠò8òTºÄ\¦øÌUÉvÖ±m¨—ŠŒ'€F˜Á!;67¹7Ö.¨ãtàŸ{…,‡czÅV ÎæeEŒ¼Ñ¶Ä+ì3òôJ± +!o¿Â=FC˜[‰Ž%ômë«Zº‹WEg)®æ³Î­qÂéj£Aš¥´ŒƒÊ¹(§Îqb?ÿ*)ß`w´FZ÷/8àAÅÊan¢,²#hÆgž™7ËSÝêJô³­Þ¹ã°æ'L<,ÑË\îèåÏN± +.úFŽS|[ß½)e7甈ó'/¦Ã !ÙÂ=Ÿ6 1uÁ¶›ÇHË€Ïl¤n=Eþ°˜7aÙ¸:h¨Ùåt_£pøŽe“Îeð¬BöqgÇ3 > Ó6«¹¶Vy7™>ï.˜tH“ WKr\}ûí J4ûÌO¦é2±% +’ÏÉéHïô jÖI½‹B•‡ÀŽÃ6ÃôNO'V¯ýƒ^Ñ@2n¶ôÍý•³'Þ讆 €îF6£3@É G¦\6ý¯Œ2ÏË0±“‹ÏÌ9j×.êºð2Ú_híÒ¥ŸïU™]£³SÁo[õà3j®õ œ¯ +ú%«‹blý@§ïÄìÓ'Ž3çl»³IW ,•dÂ!ÄßáU]YÓmÎ`äñ½CìÑeà¾<ŽÿÊüÁ +ƒzfÔ…L©^ß“dþú¡Ñ%‹žSQNÐ.=Kk}ÝÇ oèêc:ȧõDÕ—ü#ê‰IˆÄJ‘×H„ò'œÌ'VJhÄ«… HAQIŽvVXÙŸð…= 1±v˜Û…x2ÌpÎúʇm„X#ßsÏ|ÆexÅ+6Í"/C)b›`Ÿã„_>)L‡Ê¿Q`dóQð‘‘=:s¤íE‰Ð¦œ‡ “1`"’‰UdÝ× 7»Wàrë¬ä¶FéÔ#‡è«õš—ÈÜL¯œ€™/Šrb<(ý)V2›|œK†óY]{çG™£âÐH#^ð2yù\òµ ¬zØò ‡lÏQÁ†loÚPt0JèæÕúg”–ò~ˆ‹Fù0"ÈÏ’Í~‹f·¥ wsR(¿þ6Vú†2êÄžý54:žžmÛ½õ¢=‚Ï˺¯mâ€~_êz±‰ÏãpÎõôƒ" o#¬„á¨Ö2#gâ%üI8éB› óe@½ÍúÚVï X˜í÷©Ä’È(j5‘þ“véöV+˵í7ŒmsFòAwPÐ\ýx´s¨?|u<¼¨¨Ø㋯âæ’DM 0Z•3OM»ÆŽcõÚ>}€1­yJ-ô»…¤>»W0‡£ù(ÝNÃ~Å›/åb-ÂÁóùJÍJ¸ +¬Ö%4-G”°ÝOs¬‰›Z“íîvšMgî“}öºàéJ}šn¾É9?g™`ꇷNdQgAÐ@Âw}˜@×#Úáúíæ’gc·w!õ:b{Z $ã¼LenWÎPÐo6c%#ê°¶¬Úé‹ëšËF’Òp úºyÏ=móû¨¶F·è CV³ NÍ.p25°‡3%YÌéŽè(û”s=DÊP÷E”#7‹æ‡ØÀFÃS/¼"kªÏ±Rjö,ò“ÐTIˆ„FwÍ~)1/¹ .ÍTŠå ʬNº‰¿Ä$F=Ù!Û°|¦Ö[ÛL¢ÅÇH=õa+涊ç"ÙÊC-æ?-¤‡]šç”;SŽô-Ã}Ðø3éSDL|¨ñF¤e‚$j c9‡½ºY¤öIó„ +Ûš$¬-n`ñÚA/ÒyĶ¨šI¤£Ê`[̺-˜Ñ<#pª ä‘ÞX?”L,ǵlWLj3έ@ê,ìAðM€{AŒ møû*î·þ«ž´6ƒé—û½Ñ£Cøk¤äa@½]Ylc°}´†²¯Âw2«Š¼óy€zi¶–­ŒV˜žØÈ°Z±íyòq3ÉTÉÎg>jYS÷,»ç[^äƒíÀ4.Gßg-+]a"r­MËòJ~ïÏ«‡T7ZæÐÁU>äUº–…Ãr"êEìù–®Áª#Ò—oåKæG)R'`æ4 2=LÔ¤'´EQþvXuúû0Š£ž„E’5þªTäS ¾aeîü”îMkKŸ>bô†Ö†w³¦hÙ Š­\ÁIFàº? ôÒè<¼€`_Éo(µÜ6ËYDáÑÇ_ënJA "NYõ½í¦Ãä“L²«h~Œ½T„4v?´LØËUW#Æ¿Åã\²ýûrËáZu+åXÓPþÒ.°$©â‚üL;çšù*íØ e¼-3¡„æß+~Œ?0å5ÛžîWüN_Ë6Z‘ý¶ªHW„‰ã'ßpõ6n]ýÕÞQ8¼ó‘°Þ§ªÎôR¨?vúC<ˆç±±ñ©àAAbË‚m›úGq¡ež¡ŽN39½•Iï-õç¯Hò=j|`ÈG²³à —–úVŽÍŽ©È*r;½™EI +·‡‰;Nu‹Y¹&ÞNX™ÉºÃvUw£›aŒÈê4Ù!Fò +&Ô綻»*À´Ù9Œ©®éä¸Ä¿q¶®RíËVþ©Ìʬ !y#^!"´î&¦„`$V—ÐøUiÜäîËâ×Tï9ì%f ^?™Í00ÙçZCË8Ÿ  :P¶ßÕ“ôE½¬-¼›¬„«sŽ®£ÓF™@q^±KgLˆÄÔYçj\·gú—¿nÑ3)m™þC˜£lp/´zL)üÌN `OÛA üIPJ"Û1³ ‰Ñ¡`½#ûŸ ˆ£·K-Ë×°QÄL,"´;›7 °dna™TRªHÈ¥Ð.îzxͯ͋ž¥Àúˆ?q ÁlO˜_æ¯ÀÊŠúuy:ÞPg€±b,iõüfMÈA™  Ë/´²]¥ùÈc¾Àn1ªcß¡úZ´[a{äæPû¦#{œßUÙPþæÎ4Þº)äˆDÞÇœ±è_%gN]X3˜–Z9r“‰¿ò[ŽI²~:—ßVààRF~Hà‰`UŽôã“©8#”߱ݭW¡p6{Zè¶hTúÔëd ªí@t¤3-ÊÛ.úìE1æ>œüX˜}uRcS_N[ÜÞ8V¡ù%‘¹1tw«Ë§’èQ·ênàƒøŠŽ[âI5´ýéß³›¦Ó²ŒåÎ(K÷>ºRä×ö½5Ù²–}bxÍy¹§hd°Ò#˜ã¼ƒîîU¤_¼&ÊÏ9˘äs"Â"B+¼èu¶w +rHt¢¯=TY)×µN,?÷aE¯? ÙÂÑ<$“«Iérî0÷nîÞ(Rûô.n¶)¬!¯Ÿ¢å}÷_–ÈÜ!‚›f lO’€··ZI{Ïæ<¾’1ßk5aú½ÈæjªÄ²ƒnè‹äè<,BÈÏ´1“CíÇÙoî"á¯Þ$¹´¢pVO8¡†*êI/¹þWób7vµ%ÖÞóázI2pà­ïÃÔë-Ç)“![Å5÷4çAXðHÕX¸à&=¸o\pt¼{~‡+ý'‹=€®Ý…,‡<æúò´Cît$ûíH\µ¡9¼¾K)‹k®#Á,zÙ8#Ž•wr‰¬ËPñ…Dròrt˜°ñ +­l”ÆÂQ>šI ¬ì×qÐA´œ»ØΗÖ!(‘xc¶„“NãÚH¼þRóâ D¬ŒfX%ùqÙeؘ6Q_èÝk–ïc+ädh)!ƒyê•V‚+yÚ¿-£®Zž/’»uYk×i"ê61½ï]¾>PD½ “âD/!¨>ʉ­ËÁ¸Ã ïZEJ€&ƒŠ„8p«ÄÛ;½Tðžó®nt£^VRíÎ…êø+"LÚN¯ŠøKÛ2Д¼ËQLó„©tz;{®mJeïpÇiîë¦(Âæ¸86X¯…^ö† +(”Žy˜,1/YGã‹JÜúy"P)žS$í&Ò¹S +a¼Ÿà µC’±³'LÙŸl–(ìïGüT<Œ`J¡[CnLWÃÆ–5'~ +¤Òü­½æš8ðã2?m`eeP{kÀ›“ÌeÖðˆ$ Ã@ † d´ÒG9ž´OoœöìÚ>;ïÎ uî‡ã8GzØ*ÀzíaÞ‘®eo\ +Ïï¦WÆDJ¾(0¥¬-èŠ[ï¥d7Èõ·@“ûØBœ"ó´Õ“ïéZ–]·$ä ëélx8ÕNÿ,uîò(õÇ£.­È +3¤Tö+?sÀtá^©'¹â¥èA 9þ pozÈü©K'þ­zsÓ»ÇÞ +ôj™­¤"Ë©rÊ@Ãv$•+]³?ªtÍQ$¥0® Ѳ·xÊϬ ÙUíÕzóYõdж(uä.‘¤,Ú'6ït8;ÐÚͲxœ5Z™å“›E9ÂÉt½ÕqÝBkô‡Clù^µ.µ'‘Ÿm5@˜ŠKfÇhÌÓaF:'+k‰Æ9²-¶ìUãm¥ñªÕRèmн‘ý¢ïdm†¯@1³¨A[~‘:‹ Ã-s»åÍù*dºÄ0#‡'³ CÝÄ.CÚiJw֛ω"B”Pⶀ®vØdx}$‡´%«¿UXË1&ÝéhÀ"D㢵ÎZ +½íeÀ7&ã¾7E}?£„~ˆ/U„ƒ¾Ä6áÜ€{ñÜòQ—Li}’‘z“°Ä>EÞÝË ¨i»£Q´¢BÂEšyäâ)¸2³$Q¥A ·¶étÉ—L>ºý0s4ãS8ÍX¾iÄ †DϸF…Yô aB܆ë>‡3NÿÄYjŸŒѧû½ðC× Ù1ˆÍð¨Eð*Žà,fŠ™€ -eChœ +}ʇ5ñ¨Ìû2¢±x‰ *ºÃ¢gæa<ž Œ•µz'!Ñ•?8U‡þ†ÊŽúšµ4ET©ºg‰4?a…Ù{ ³†Ð¡ÓCwŒðâBƒäÈd7®iЯ<g0¸îïSô.¸LpÅ#Íïzå…’§ÆÅ&zɺÚ`ൢkÃõ£åÅNÎN&~o>Ñ@æø¾)Ø`57焬ÈãÉ ‘Ã’¥ƒüyjèi–)•²Ìâ!Và” £òŸD½«úŠðž|·T}$>C6x«¢ 3Ì©5žçpí|B.@¿éÁ#¸^ó+OŠ§n„å‘oê_ùÍuòyK'w¨&à=éeQš°²fãn„ô¼õ|­¡£Š!@sÛf q˜Ã>öž4øc ‹ãúC÷’JÌõRwRíì·;0Fh4¯?¤ÊEþ6_Ëî¡÷T)\¾Ê,yÆc=ñÏÞd +ÀÄkÍW +ÂÛ´8ûî]Þƒö +Ôoé4Qæ™#V/Xñ»7êW ÿŽ‡‰"â)9Ôîjd64x¤)š+¥ºäÇ’¸æBb^¦N§Ñ.×OßØΞhs]ÌqYh¢†¡&̺y)LHŒJÄF­È"< 9ì ÷>j Vô2|«óÆZ×s] €Š$j´RÓÒÛ§òb h%ãÙlf“éîÄ’÷†‡ï MG[á +£õ…‘ðJ×uQ´òî†Ò…²iÃU§p›…&Ìé Í^1‹ÛPJˆlžøÑU…õ‹±¶yñ´2¾_’ iÃ2ùE&þ®Z+0€&Anzj(²S”ˆk$X µ.Ôgÿê[-NC ÏôkSWÛ×›PRo*xþ;%k!\ï³rä¢J=­dC+Ž^¶y,•¥(>:›pAØ*‹z›S>~ šyM­Iþp^Ø°wÄÒuÚÄ{IL˜ìyù˜º˜dL‡¨CkÝ Ù$¿`"½À®=t™z@ wÐZÞ¢¿Ÿ¦È+F> IŠ$µ©Míü&MïGb M\ ÷éÚýn)Y £¶Ø YLû¨~m×Ĉf­Úù (c¨:ëŸ3â-ÓŽXнïÑ_$/L% ÐtÛ!ìáfAäZÈ9Ê;1 Ýôì¹ö?*|”¤Œ•œÙ¦ro»™c_š4tÄ’Ç7¨BÃT;õiK¤Å1¦š€[kÃôÃR‚_îp•žj+ð EWÎÎÎk‰ÌØï– Ùi{+&ŸÝ€Ý’²h Œõ¡åõÒR¸Ò ­‹èˆ„#˜°7¯ÎœóN-+p‰ÙxüCÒH*ÏGe6yì˱â]C烱½FÍo’>ƬA4­àkÞ¹Öøë7ÀGLÌy¿W?Ýǵ ú)ó;xqoⶔڦƲ•¤"›él$½~K3 ÷ReŽDåÂAÞùQ¾‚ÆïÂKü1zÔ‹¼r´t™=-©Áç)µPvçžE2?…§ÖESHÇä§ÂRa,}Æ4€)iŸ5¢bl|Àק%d¦ÈMI¾ë pë#('%UÆ3F[UìUfÖyþŠi?G;{©'퉨4G­ñœ§-‰rQÙeW:z• +êvXøš¹ã„óiƒÇÇw«¶[5ñ +¯¾–@bÏ´|ŽL§Ìº}µºÎ­ì4»K-t%Ò}4t2t÷ôh¼QÓ¶[GúË[%`À0 £ É¡Ð`°8 Š„…¢HHr( Ça8IQ ‡¢Iãçø˞їýë«ó €ì¨Q*›™$©1Ì‘„9ŠÇQfÐx` z +A‚!†äQ‹d¤$%íÈ]µhÏf0ÿêf‘bñ*' ð­¾Ñ¯Z¤º€KÚ–<8º1Ä+>½ÖÛBgi‡¢³Ï­aß[Í»2p†ÓA”Ô´Í>IÛÆÁ W™ˆ _kÎÀiìɸ0¶ÁÈD’=‹ò§ªo¶½[;iV“òa0#‡À|ÀáK(ñ͇¡¼¦BòÒ™k­ºin1ñþÏ,ú)o|V|™vð‰xý1>2 €i«ž$kö™ôßÈÀV¢f~Oñ©#ïœAñ¨b{fšMG® ³üëQ>™gÜè>5öÕÔAÀ œ_Žþ1tŸCö£A(CV¡è¤ÌTä(ºt/×eHZyq™á ¡1¤×ΑJt¤ý*ž8tU8Õ!>C4Lä¢Dwóžu×åG—ÚG%ÿ‡F \ E˜üC·#¶I9s ±ñšía³ #s££½ƒ_Ÿ¾&i6ç8³^½jeA¥€!KW endstream endobj 42 0 obj <>stream +H‰ŒWM‹%7¼×¯¨ãôáU+%¥>®Ó ƒÜ°‡ev{ì]x³à±1ì¿ßŒU÷›é5˜U +•¤üŠÌÔ»ÿîa¿ÿö·ß<ìÛ»÷ñ¸×”½žÊ¯§Êë©úzÊ_Oµ×S]S¿niÏi·<öK¼?Üþ¾ÿgK‡YÝãY-žyÿüËvÿ·ïÓþËoÛ¯{LÅÏörÌ9ÇnGJÉö§O¦?m;šÇæýRâ[© ƒ²?mÀ¾_ùn\³–ÚÀy#–XæàƒçO–Ÿ×sè\‡#¯|Kƹ¦@§í_ÛÏÛ‡°$M;Ì;,y±Àr•ò±åFpÅ ‡íaH¬ƒ®c*ŒÑ\Ó: G¬][àIƒÁÓ¦÷u;?«uÀÓÆ#¯Û’!™²;C%;, ±ÿ³c-òRïÎEk)]z¡O¥½z—ÎïÐõyÛMë³ÒH_¶æÓ´gØÞ>npp¡z„Ãn sÿø_?þ¼Ùò»íípom÷cÚðýñÓö7¿}üüÇÝ<ÚþæãOûwå°ýÍ÷»>~Ë£Gñxz"ýÈ g=þ¿ÿý‡»ø²¿ù|ý÷Ý%á„ß?rß»Ç?¡÷+]o(aAëb3xv´†?ó<‹Sêa3ƒzGñ˜S¿e#!GÖ—>rŠ‚ ØïG7Á ôb­¤J0.vthíG™×##‰B·P‘±N»j È¸Œ‡–k',}ê`ÜÆà¸BÉpð¤°éP2`Ä°¢ ŒˆAp-l™d9<œu±¨Y;¼TMx£½wÁ2á(ÀDrb~â¼½ +Óν…U@pŽ¤ì–¹·u68º%Ö•zxîÀ>õ‚_âåŒFعÌM]KR¦¹ifAÖ „!6 VŽÄ(×^¥nÂiñJSê¦`A<³f±=6({‘¯¸{KµŠÓ#‚!x”/¨– m!Í{ + ØQmcŽcèg†¾F`ƒ?9)ô5ä´‰pתo¡(¾u¹d­ºÑF±³x>@®’ù-cX­CÕ­­Ç²~¤i§†4|ÃØ‚ž1J$§ç›‚ÓÌèù6æŠJK k¡ªR°vâœÉ|”?E³ŒôT(imuF± WÔŒrJo;M,ŒCE"bÀKÐ,xÛÙ»"Ž.\øJŒŒNÖQN$’‚¥$ÙÈ'˜Ú1n@Ÿ‹de‘¬-’’ Ù«Y€ñÍþ´¢!F•m¢ˆÜvjªïqd_¹›˜é˜µP”Ùá@ª©°e…ÓÂßá×2€% |¨¯¡)„lú-ˆä×P šøg"T pȉTg3–$:¥0ð1Á°•Y„T‘ÀÎR‘.­Š³ÌD‘MY¢K®-ET€‹ô ä)Àª‰zp%Ǧˆˆõµv$j o"OcõòQÅ–énï¤Ô‰iÁÈ‹¤ZUö¦%ÕuKJ3hvæjÔ²¥ÊÖ>Hð‡R^ugêMßêrsª$W_ÄËÈDÍ%25û_­n åt¢º•`Ð-ëPô@w_™œª£3wÉ·rˆЄ^ÁU„ÕB½&S8¢–™ë¸Aé/Þ™ +\µÅ;Së®FÞYãêZ²»F­g +-/q]cq$ÎÀWÊ“$4.Sb§w%©³©¯è6I¢BÚ9²ªÎ渵}Ra“½Mw«d«wæ§e&Š»+ú«2±¢F£|¾ Æè;T +Ä®òç`j’‹ ;ý7HŸéª +eUçÙÕ¢†-c]lȼº¾òø©j©¶EÎMR˾¨všäõý‹– +ÊM^Døÿ§­\®,‡‘iÏÌ –Cì³° »AðÛ­ +Îbhg26õLÚ™ZNêñÏ!ÀpQbÑÜ*½œ$®Ubµ>AÙoÖU]üæʶã5Fî³ 8A(”UÊTƒïVÊê÷hE7¯Àê®È _½ÑûâÄ؉†PêBeE®Q¨éïÅ æêÔ\À„êêbFÏ+;ÚÌÂt5o¸çªŒq"öU×GuUņujý§œã,3S’édo)åsÏ/¯nø}Å-è n°ð¥ª3.%WÓ^¢ Ïôêº(.².ú5ÓQi4¼¢âºw‚IÛ ºÆÂo­œ¡³ŸêB<ÈÎÿå-™Ä,{ir«ÝÊBÚ9}»vâ/ËPæ=íœ*3ÖVgòÄê“UU%t9¥8æU +7º¢ªyÞTr1aÝ÷T»§..çZɬ…@(³Ö"L1µæ]\­ºxu;M¥–W;œuóÄu×Ä¿"7ûâ›UO¶‘ ¶(·nqÏ\{÷þaßî¿{Øïß?Œýí78õaûŸ÷¼r endstream endobj 43 0 obj <> endobj 66 0 obj <> endobj 67 0 obj <>stream +H‰lVtUÇÝûÌ}!¸ n¼àî”BÛO[ZÜ  D q¢hp +'H?àÜ)ÅŠ»Cà‘àTJ‘äý‰,~éâ¬53÷ÈÌì™{ξ7*2Ú‘…ŽºÔ®‡¹©[ŸïðâóÍH€ÍƒÙ[O-’5¿]Ó„688¹ezâ„s~¦˜àâ,Ÿáe9Ÿµ¨{Éî}ú‰ú\tB®Q"Y1Šv*Ãâ”Ç9o¾ü +*\¤h±â.%J–*]Ƶl¹ònLwkÅJ6ÊUªV«^£f­ÚuêÖ«ß a£ÆMš6û¤ù§-Z~öùÿiõåW_·þæÛ6mÛµïбSç.]»uïÑÓ³Wï>^}ûõ÷Æ_?ÿ€ÀAƒ‚CBÃÂ#"GEÇÄÆÅ:løˆ‘ £F;nü„‰ßMš<åû©Ó¦Ï˜9köœÄ¹óæ/øá¿ -NJ^²tÙò+W­^³V­[Ÿ²aã¦Í[¶nÛ¾cç®Ý{öþ¸ï§ý:üó‘£ÇŽŸ8yêô™³çpþÂÅK—¯\½výFêÍ[öÛ0œÒôIWè¼r‚Fp$§q&“¹‘)+žrTŽË-E¥T^UQP“Ô•¬ÎŒ~Æ,c®±ÐXjl1ö×Ç_KB¡–nãÜ^›%L«éaÖ1˜ÍÌæf ³•mÆ™#Ímî÷âî%Ýõ͹{¸×rïk«“µ°µ˜µ„ÕÕêf­nmmõ¶úÙ`[[›‹­´-Ù¶ÖvÂvÖöÀ#è­88Ùï4)g7ð”Ö8hœ×Þã«qNUK ŒéF¢±ÀXb¤;kÆ£\œ nIf1³T6ÎzfÓ\œQf¬Æ™ô/œ½sqÕ8ËäâìoõýÎ5ïqÒqßápÜÕHß8\ôíÎwLbt®gmçøÜQå]’ÖKý?Ý2^e¼Ìxžñ0ãnÆÑŒ]-3*½ˆ½›?Ç—6.mŽîǦ½Nïž›~"ýxÚ­7I«ž^ñŽ×í ÛñiiÍí‰ö%öÉ€]W¡=Êaï§Ç:ööáÙZ¨}Pê¢ÔÄOR§zÝrµìËÉq,û0í¥kNû@ï+c冊Q3ñQQ£F³ìªkû¡Çøâã3Œî9-û¹óÇcr½M²6ÀRŒÅ85 ‰x€ñ˜ŠÉXˆÕ{LÒ‡ƒYx†çøs1‘Ô¼ø‹°â¼À¬Ã1Áz €¦Ã'à‡£8Ž38‰S8‡ðÇyœÅ9¤ O0—pˆÇøß!1!F(’†„#ƒ(Ä 4» A<†b8†a’1#tUÂ/ø »ØŠ_R¨hЂ·xǯø5[ód “NÌCg8ø-Û°-Û±=;0/ó1? °#;á/¼bgvaWvcwö`Oz²{³½Ø—ýØŸÞø—Ù„M9€>ô¥ýY…À@fe1¤!Åé b –d3b0CÊ0†³Kc6² ]ÁH–e9–§3 +¯ñwp—hÒVF3†±Œc<‡p(‡±"+ÑFg$pGc7+³ +«²îá>Çà +nã:n v\Å-.ä".æ$]ÁÉ\Âe\Î\ÉU¬ÎÕ\õ\Ç\Ï]ß¹‰›¹…[¹Û¹ƒ;Y“»¸›{¸—?râ~àAÖâ!fmÖáÏ<£<Æã<Á“<ÅÓ<#Íx–çX—õxžõyy‰—y…Wy×yƒ©¼É[´ó6Ó˜Î;¼Ë{¼¯¦ñòóþÊßø;Ÿð)Ÿñ9ÿàŸ|Á—ü‹¯ø7_ó ßò3˜©y¢?'¢Ä‹8Iq–¼’OòK)(…¤°‘¢RLŠ‹‹”’RJóWqÕl[NÊ‹›TSÜÅ*¥’ØÄC*K©*Õ¤ºÔšRKjK©+õ¤¾š. ¤¡4’Æ2Y¦ˆ—®Ñ~Ò_¼e€øˆ¯ø‰¿H  ” $Á"¡&á!‘2X¢$Zb$Vâ$^†ÈP&Ãe„Œ”%£eŒ®öq2^&ÈDÕVµSíUÕQuRUÕUuSÝUÕSyª^ª·ê£¼T_ÕOõWÞj€òQ¾ÊOù«¨ª 5H«ªÂT¸Šà ÎTQ*ZóH¬ŠSñ²›°Yš°¶a;q¶`+Ë +ŒÆLà'l.+e•¬–5xÉ9²VÖ±±¬—Ù †`¯l”M²Y¶ÈV5NWÔDÌÇï8ˆå˜&Û()NnN.–g–óÆ0ÃKÝÊúgpÓnÒ¶‰šUæilëþ† ˜†4§\dù\Û!qa‚Ç( çu N…+jüîªnâ:âïNòé['K¶‘lëÎçaIÈ_²q1ÕaK6`Û`ƒLQÍ—q“Æ!´…4@Á$àt`Ò6ýH˜&Í?È.%¢x&´¡n:L2úWÛL’·MpÒ†2Áêî“dè4½Ñ­öÞ{»·÷ûíî½#²:Îw¡ûM‘ºÆVÂX/Œîî3£— Ëýï±’l$qè`ß´/®xÔÂh?ôÁQ6–=ž„öˆ0rý±‡­àD[h®W°]…=Aq¼¥ãx‚gðÚß®1Q_'‹²X‚ª{Gð… ÿÜïÏÜÔrÚ[¤ŽJ—H03Áfã露 uµ Êb&‹˜tšP: (z‡(nÁáY*xK*=•ÁV¡Ù¶¼0äi®]+Dmk +£žµ5‘Ú7àð ¾±d§{‡g§/ß\„çƒxŠöâVVuÆÄMÞq—÷iqŸ÷yñ¸÷¬ø²×¬¯óùâ¾ÜAºN©¨¬ 5ñ Í¡¦êšjü…š*øb§R]©T蜎¢â"üi¹¾5½>ó³…Ì1Ë“Ôû½ôµ¡mÝ燯¾MÛn¿Bu;, ŸœþÉoO«·Öÿü ú‹Mo®PW·­¸ûèÎäSÛu9\ŽÚ?¾vù³6ÿÇ«·‰–Z¼Nÿ~™d>äËøðÒHw«ƒ&¯,18Þg7™t~&LZúÊ·øw[eO:ÆÊù œà]Y'ª"'Š’ÐSJKKKÂ_¿J0PÁZFËÄšŠhr˜‹ +¢ŠŠZ„Ž9)3²OìF#ƒ~V­VÐJ.$F¿`– | ­V,G{‚žœz=hV³äé5ä …CHº»ЖeŸM– h²ÌmLgî©-,ãLxO£€ëŒ¥x?#K£of,BǨƒ4 {ã±&Û<“¾98YNä±Õvÿ‚qÏarÄE{k0>go­¯Ã qY é²)Œ7·4W¶d38/PBÍÍ ÈºS#²U#|Ùå%ÞàÁõgÿôøŽ´ü\ Ö;¶ríÅ!CË{;öWÃí—7þ3Ò·}ïþmçö‹+íÅž™~%„2µ¿¤ØVSõ¶µ²&¸lâ±…2Ú¢u $†¾9p rà¼e +‰DíêRØüXW8뤵v;Ui“}—ý°p¨ÔdÑëŠÛEÞDËUÁ(8²TêP¹ˆ`9ÜX5s¨äÈœWŒ@KŽ½[YysPn«Ks§*<á +ÎâÖ›½ -ô.G¤Ë”μÏ: +(a€ÆÃõ§ŒlPî¨F´4éÐÒ„¡ 1(Ÿ]Äû˜ÆåæØŠÛæPʈ aÈX¾Z«k +±QDvìš&Æ•XĘ9ÕÓÑõæέ/DM©éž©'®ÞüíÑ—Ö¿±º÷©5?šäZN~°®§'PݤsÜ¿¾jÃÂ{ ³3ïv-¿¤²ôVàc€~G}N­jsÕ•.—z\í¥«¥˜nD7fÓÛ)'jKVYx*”·k ¢ãÿT“9[MjŽ€;ªÂŠJ`<ØØ(ƒŠÔ2& ¹²úT °j²26²54‘eÂÍpÛpÆíJГÎ,¨>ô&0o‚I¶RàѧÀ¸ô${ë9,–Åðoh y°Ã€6+ ¥‚±.X!ˆ‘•F®:¦ûR»f>é‹F~5ïžž^w ëÇ©ñ3½ç¾Õùm¢â ï?²®·ª†Þ¸—áž©pýõß¿Û…HffùÿmR{¨µ¦š÷™ëøæ¶ò¾ÛÜ]¾ÙÜ[4jN0,·Ð6ÇZºÒÉC£ø‡º„•¿± l…4”YG“U|Þ%ˆ²™i."åò{^0 _”­²GËeàPº¡n;ƒÑÎ`³ 8cg°ÙÙ¼Ccû1)€”ÍNì5ÙWŽñ +ÎavÊì%À´4:9‰ˆ6ê̵>ñžÚÜôâÆ=¯7l½úøÂÇ 3Ô7ÿÑçoÑ—Îœý¥‰sïz¹¾®îëþkÞføtR;m_¸{»öû¯NÌÎëýYí_Øžà5µF8(æN£Ój…ÃzªŸÀ¶¬úÙ“'x–<{XžÕÏ2wQó…&k©6_ÀÚ\Ùió Ê–ÕZlùè”ÌEô¤ó'~#[»7|³ØiÃ>€ƒR%Ô¨2¥Ï^¿nšžÖ–üî^lšarÄ~¨3 ùŽZÃQ*`,¹‚`!Öh ™¸SJó¡ÒÅP)[Oó¡ÒÅ^Cy4†ë»™2Î?”…É‚„eŒnÿô4„QÁ7‚fh'Óªƒ˜mfɬ1é­°Óï0XµzíGò Uõ²Š%Õ1æàL,–{ƒ»€Å^àÒç×/žë¨yhõXö"ºÓWbñë ¬Éâ “õÙtæ߬UêÇ *Øl¯Œ‹€Ø#ÿÃ~µWQño÷œ³{ïMH.n. < ’¹$ m!„ TÊË¥^Š ”gèÒD±Ä€`* è "µÕ <ÔŽ!–„™0 PŠ#mÇiÁZtªC ö&·¿ïÜÝ@.¥u¦Óþ•=ùòÛ={v÷;ß÷û·¸5„ÆGçÈìÛºbs=ba+–ùM6}7tIÃ}CòóÅfŸwâÈÈŸdø'3¾®lÞý¢èEqÝÇPcZétËô¦÷0{¦çxõ y‹û•yïî7S…Ó2+ î -V ³3æÌ u_¥j»Vg¬X·ÁXßåGiëþØØ‘ž@IÁ\ÙG<’ed•r€eeå”ô‘6~”êoÛ %›™Ä•?‘«-—«m–›^¤:¨£2èÓçšA˜ì ^Lr³m’®i<—”N™A¾¹ì»ËÚ§©ÕÝÉ +Ÿ¸Uïº[õ®—Ðyb“Ó¯Ì*ª-Rv@ëªÛ;M»sm¡n0n´ºÿÌË+hï@Ú“þ…¹e—pá⪅3 {ÌíM¦›Z{d;‰55Öh¦ĹÖó«OWøîûpî꺜œ…-ªxÄWï|eÁÜwÊ}w½ûÀüMyƒf>š÷ظqFÙöc_Ë~̤ɕeYYAo0iÀ¶EcWÝQ0|Hö‰¢ñ“¾16;;ôõ?¾.‰^6[ÕNJ§ƒ¥e‰*Må)‘à·Kº$øTzzê(áÔ»¶·™Du½=]üš­~í ¿Ž,¿v“?Íç±K»ø‡Ã­¿/íʦ¶3˜ÞN,¸ô¶Ûém÷bzÛú˜ý[¬JÚ©ly{}¯›«Q(ãw¿%„`¹G Šÿ0fÿX¯ÖÙ-@fÌ®7²®ÙZôƒ! kkß2~ضÚ Lœ4xn?4º½yÒœºÓÝöËmâÞòöO÷2ëG"ºkóm,#s­ar„U!Ç[V®¡JÕ5[)+ +eš0Å@ î¤áb+ŒU¦‡”¹BB™ÓÄüîçõO¤^TE«HÒFO²Ç"EÌ+„½˜Pb ú„QGÂLoXw7Fx¿Ä|1²¡†!kÛŠÑ6ê”1Ø.ÃÿxA†#ëÄJÖ»m®ÖÛ¦ºÒÑÒ*´Ê­ÉÖlk‰ey…­zŠTUaŒ÷Òtc¥ðš6o@¥I!ÇS…4I˜R™‰æƒH«¦Rëåè=Ak®h£7Ùk™"ÇÊyr…TrÇJ·@éÔaÐ|T­e„‰ÕN‰éÝZ}âLÛ˜SÆtc† aïÉ‘c¢˜mN0Ú“§/f •\|•Ò=ÄÇË5幌Gßnøs$¡µ>¡ÞÃ+½¨{¤Ó¢uj›J”˜IˆÚ õú=7b‹Ç™2ÏÄDäÙb/ý̪£·U€žñÏk !M±yÚYY*v3ðÜÇxGäªUg$Â+»°§ýê!JS«©Ym¥åÖ `25ËíÔlâZP³˜I‹(_=AïÈjÌÆšðnZ.ß¡ÚŒ¹‡h­üF;Oùö%º_=Låò¯dkðýO!èpH¢è~|—”j”yô]àByŒª`—r>W~j4C´Ï<=*ߢ#8o²›©‘çåyªÒÏa¨ÒÏ/¨÷`íH|£XÌç²Âª;½;¬6á^“Þ7 öÍ{vö´„õ×:ý+a¡ßÍv™¡è_ Wq®Úu‹Ö«ƒÀO²Rûè9Ç_{á“F>—-Ôß<ÇbŸ¡—UÀì [Í`ßÙQÛ÷žÇõ¹˜OD<·PeÑaàÓê×z›ÕK´×ðÞm•˜[`ïÁ>ÎS×K™{Ì+ÈZøã·ÀÏñlH ¤!¯âú k'ýÍ'é!ûCì%@Ûñýíboô +¸»Õ̉^_w9ïÚ«m¿›¢¼?‚ÏAŽ*¢reB°wæ0žkÁ;Zó¡3'Yó(†É÷fRRÃ笃+šgŽ0/`Ÿaxï`’›e¿™©„ÀÎFHÖPЬ  æ+8ÃÜd~07Àù$yþ‚îz À1ì ¶1²e% fÁþ©Ãw‹9^4¡gû»Á-挋šÓà=ï÷ÉœrQÇÞ`ZÈ:è·\ä¸Ã4Îo€¢{g™o.ê˜d®!9&|ÊÕ‡ã“cÄEm?梋Ž-\”ëcñmmtbówÐ%¾§¨J\'Ÿ5úc?2 +»„i‡wÖ_/Ñ>õòÛ:+WÐYÎiæVJ–gé)ó7ô Η´Û!ÎVñ6pѵó-(ʦÀùˆÉÏ€³€à#°¡ÁþnâœÆyEç5ä-1;«ÛÙ5ξéñv½ÅžŒ 7s¢ÎK¿Ìùø†³ŽkŽMçÌÇîúxlqûŸÑùã0pùÙÀñiì§91þ›Ý€„oÙ*•Õ‚~b +‘ˆs´Õöø*=Ù^ v91¸5€í„{inþWCh™æîsPsèûl'ß—ƒ¯AWŽ‡­/ó‡¹Ëé»Täiä9Þ‡x)–ëe›öM“㑪Oì¾´tΪBþh”~pƒŸ}“î°êi¿µ†–jŸñ¯òëoMF™Ãêä øÊÉ'5ì{ÏgÔÍÃõë‰hTs:j¹6€èg¯‘ßeŸ  y…¦Xžh{|DÝØü\[0‡[pìh{¤bþ mò”P³ç~¬/‡ÝØ[y–æx*€/R¾®3—©Z¥Fqûý;y5ï¿M…2D£U_p¦¯¶Ëyzãi£ê«9¹&VÄâS×ÁC´˜ë òy#òÙ&Û¤F4Z*ñû-Ìm̦iÖϧhŒŽ5ŽŸãz¾Šù­k0lÌñbO¦Þ®Á)í~âïÂVü xwÒ;{á¹J£'rå§!¯9ø9ä8ÅVµc]+ãèQ+,ÔšJY ô:ù]ÄÐè)»Ipm:k:̗鹸\Û£ü÷÷¿Þ&WÝ„¹òúÛÜwrRƒƒû,lÁy=%Á¦)Ì=ö¿›«\Ô|e;»õÊAÝw±ÏÁ7ö90–Çœ÷¶ç1¿ö#q=çZŽ\ÍçßÑ=D÷Z*ô~üçÜó*m÷ ™Ûðs.¸¡À÷»¸/ÑñRI‡ãýÚytÿÍ_{;bôâmïW9Œ¯ÙnþùOs· êrW÷ß^½`Cô’j0kbâžG/I¢þÜÃ8}ö`{q}rÂôŒÇtÝAî‡YúþÇ·FÄl2›ÄésÆb=Ýj„U`½n½nûõXÔ9:Gçè£sü/¨[h>Ù´€™ä§ªÄï\ŸÑüONËç©2Œãïn^(aKË„÷Í`% +L¶Ó0ËÏ×ÚšPFgœ…,°SÈÆÝ…éÅ1£¥â¡€¼TÛkO® A°UOöêIþ‚ÊÙK|vY:2Ñ7ó¼Ïçù±ÏûÝMf²ÈçTQm¸ÞY°ö¡zˆN‹W¿íñô!zÏ™‚ýeЯ3è¦ßcÕ3“û ?ë1þÄãjàûŸÓGi¤§G WÕi]3´“izNÓeSÕ²]t`~ž&ÔÙ9Ó  ÅPô%%Ó5šžHOÄÃ㊞‘³ò‹"ÏQÕ ŠjÎ):•©®Ìª†©èJ†šºœQdý&ÕœÊsáÌéz¨š¥0†¦³ª ×'MÙT *g3Ý0@s˜Ö³¦®*Fzˆ(<Öø@W‘Š¦‘Ž4d€Í rC@:ʹ» (‹º 2¯Róà›EsP3ÜH¯@÷ìèEi4áZ…áËvj˜•sºgÑ"Ì‘!û¢Îÿ[ûgDA«£Ro‚f§Fݼî*qª¦›u´S`ç®3-¸ +oBNûûšÓ«3ÿéI:Š²î,G …»ÈºÚNÎOÉnd¸gf!Ûí)О»ƒiˆ¡ê(RÝî.ø»«òºuÚ+|¥*ûb»}!"4ØÔíëvÎÎÛlË~jÙµûö±Í– %÷mËKf¸q2Î^K¿Ÿfµs?õuŠ}'Ù‚ÉfœL4á7Çxtì¾2Áq°±Þ˸/Áý±~üF,„‡bmx0–À`"X¬7‚#3øbo÷FS8ÚÛŽŸF¢ÇQ_©ò¬°y>.”*G…͆ðÏĺM?'lãx©p§²Ž ·ã±Rð¿*ø8þl¥çæs·XîÞo_±â—Í/ â½æVAü¢h£¥U¸³ÜH¸ÛÜ2·Ê­qëä6Y%kÝ«ùåüÊÚçëË럮¯pâÇþӉΊø·ÀПú#{òû–>³hŠAS S¬(?Yî]æuþ,~?ÃüeÜÉ7â |&|;Ñ!Lù>üsp[¯àÖ`òÜ} ÷ÄgÁr<#òCWßIP5Sw(‘ÀDj÷%â«Ú‘Þ•ˆ¯,v["LQ"hK"‡d¯“ìŠã;!²]‘­bˆþP··ÿ}ÝÎîwòö£@q«hØÉï°b9_f¹b¬x­øQsÅn@ p¯øK±R¬©õ_Â:¶ +³>–e{½Š)1Æ:'!)5h52à“ƒßø#aÉÊ$—ïÞm³6¤Ä +ß6Yªžc1«“V”ô…e˜†>eY¾«zdN¶ª;† '¨w‚úŽa‹s˜ë3?2gñ@ÿbüµÂ†W<9ÈÝÐâig:ZLØÃá?*° endstream endobj 41 0 obj <>stream +H‰ŒWKŽ%·Ü¿SÔª†ÉLþ¶ ^ †á…аµ éþ€""Y¯_«7ƒž:¢ªÈdfä‡_þùõøòë×rüôó×ãñ˯øù’”}¦êgÊ?Sñ™jŸ©žÔ÷G9btýwòçÿ>þsüþ(—Yø Ão=þøíñåÿ.Ço>¾ ðÏôQõy¼ýÿA‚¿§¹]?J¿Zê|ãýçíqz_ùŠHíüüŠ¨ð%þñdï/ž«ì•î=Ëóõ¢þ÷ø׃¶÷Yñë8Îðn»­†#Îy„—kµx9E”kâÁiu\v|{„]¥öÄ­Ž8¦'݉—YâŽß6êUç8ÎÙ®5°„ ¿lM}¬ƒx â~­Ú~°úWxí^άû­a†mf$3¬ÀsUâÀf>¨Åö¶hEøå†EëèWM;@­h¤ÆU`»6®Äó*£ +c…|!<° NU¹í,Wë‹Ô~͘ÉT¯pmž˜~.e1¦ pˆÓ’šX„)j-©ïB¨„y`b†åô²ð¦sXâ\x¼\*›©p°úd…æäš‘¸·f¼_ÎÍÂE¯àO¬ Ÿ‰‹Âü^ÙáÓazÛL­ô Š|ÂUœÖÆj"û©™ 4‡Zª÷j{‰CÁ¡*µÚû‹‡pÍßä<¡¢Ôr®¾w; ã]ÍHŠ‰T>ñ`.Ç>$¨¬µ.CØC ßÐètsHÆŸÞq>:ݨ.§`:}OŽ%.r ñ¢ç(ætŸPîä*·ð@5Å’Dmªré@~7Aw1†<1¼D¥)ˆ8¨ª4)šÑØMV e›ÄXû£UwƒÃXûzÕ^ +$ÞŠ¤–º Å.i¡ª³>ÎÛ,ß`<±SÚÞkIT ÖØ»©?à|ÑF…ƃx~ä…íë¬u?CƒÆÙÅ æl+ñêYø–åw(÷ +}4¤°B¨P‘gcòÕäJ—ÒÈð>¯.í±Sd?›¨:^5¤Q¬¦ãUêA¤<‹bK¿Ã+1wuÐÒtdñ§›¸}ÄU¬o7ÅXIዃDáôBɯI‘³…Ž±²€ÃTví©z|?83U–o6¡+à˜J ô ¨?*ûËSôœkºF*¾´¨^<“ЩJ¾“rºº&þß“X•AâÇÐÍ”¾=HUøHuÍêÒlÂÐH<åÖýPçtiú›¨•!¡(œeK}M€qwçÄsöìâSRØ2Šèì9µíœ*Xpˆ)UödËzJ¥ÙjÕL ¾áðÖ1e45Þ86d T™Ýû†$dÔÊÌ í…Ó™¬l` 6à¸1ÇD +OÙHl×9奬 ¦ž€ÝÔ²» +®„{æj¡& IyK%­ 8íAJ=„K×M$æ¤*<%âìc'¯¦îŠF Q/rw&èLÈ^[3S5,žÐee]b39Õp(‹dØ®ˆYi•ëCXó‰°.OÙ›ç=ÝY²Ò #ðð> ¨Û²p¥êKæ>zNNöÄœDJ߬Àü8‰ðßG"ÏœÁUV_î†'…WÒÜR=“S’xˆJÛ¼9{rÀ&vF +9ZYXѲjcCL<ë Rd]ëðm6D¹ã¬9§3#ægŠ¿ßƒÂJ—³ð9]¬|ÏsèßË$Gæ«ìfÇ[¢'f +ê¾#T²0 c,Û;d# Ón«8 †ÎÊÛFÚÐ%÷s´¼S8Ë%ʬ +ÐT‰!®Œ&0E,[`Γ2è)Y£œs\38÷‡pW=à3q;ƒÃÛ‹¡`Ê s%¡¡/ppŽ„#t }{ƒÿ N8·7ï®d 6âN+ˆs®RìˆköVÌÁP¦Õ=?3‰ð»XF9‡°º/´kð,¼á1<ïêÅm ųhxD$MiK…šæú©°®TÕ©/®3Žv:GKaÔ:¼oty¦D•K©»®8QàŒf˜p¨'¨ »žìþC™CnèÈðIið2È2µ!œûó…ŠÎÚé‡=s: §‰N\TÕq/CÌX,T¡6fÒ¹ò‰WÏ.lºôGBbÈM)8  2°—ðòEjÜ@…¼Bœ¿£Â®·̓'Ʀæœ_yáõŒe¨[âöÊ^öFs v9$Œäs^áÖpžÌŠG² ²¾|P°Ç NÅ×/3j2ü…ãÕ«„áßÙøÞY9!§rÿ ±ñšª07ã¦Lb€õ‡ót…­y°Ú¯u+¿ÓöèE¯€ »”æÔ] _ò>Ã*Yr`óñ‘mý•ØcÀ+3táÑ K-…sÚ궷šjìªw*¯.¸ÌŒ=”QÍÙMv5vc5eçiQzÊÈB<©z)ù†ˆ)[}}¬ñL¨™ÜPs¦Âº p0Ms‘n|Ȉ&ñÍö(R?’‚ÖéªØRïŒ8®A¸Š†mäÁ|ÇøÐÍ^°)¿Ÿ¿x®×Õ]áW‘cWh,üÆý9=¢,˜j dWÀhcÏX\W7Ìhº±Ü"…Â&’œÇJÃ'‹¬Yj¡°º0ß(ðW+o|Ÿ˜OŠ–¢M…^`8U±iº&ðâ2Ÿ²dßOg§¹Võ é˜Ôý&˜-«®"†²Ç«Â Ÿ½‰¿h¯’$9rxïWÔ”ÜÉ÷ÔEõÿ¯ãŽ…DD¥©ó23f­ŠA‚ Ãá%-äÐ3ns¸læûÅ‘&ü™<&hé!%Ö/°ÝHÝ+ê|÷ìÚH6CÂq™ ¡®kâY,`Þ[š¥ˆXH-öá45»Švî„ïÜbúdFPÐEGér#؇@܃[r†B3‘’êñ×ü¬§Âø˜&þ˜ ‚.³µñ¿Ü+,<5Pgp€K1Êp´6«<\5‡~‚ì/iì{€ç±‡ŒòA>¶ìÖï#¹_+?l™èG"/üüýßœž¼ +Z Ž},¦"Í$Q ±„äwegö£Ú¥ÈŽ€g“ŽOIEŠ­“?튎%½18m¿yëÑö¶MšÅ¬eŸ<µÀò« ©e!!:z²ÍÓ:uD°ªl_¬± çÕKÛ"gãâ:µ#t½4Ø^Ÿ”'p Am½y°&ÝI\ؘ责%\v¥aÑE{‡oŽpAyÃà 7FG.”4&¾Á4-ÑÌk×)Mž¢ÛËlM3ÛK°_tÌp0ð¬¢`iOoŠ†fupaö…-Ù]H½u¼óœŒxÞw¹í· žú@9ξ¥à™OÔºg_À?š¡ÿNK2Å 1†ÞwjñYÃY$Ù++qô.ÎC` vË‘ó)iƒÂU!)ÑJt 4Ë®_(ÌÀ¤Ôj€ºqÉ–œš§Œ&š‘"…η¤}¬sè|†‡Üf%\Iq€o“mZV÷%ròFqZšÊ‡™4¤UŠIl¾5C2¬ü7•MŒ‚5·÷TV0Y]Veg\—Tʈpa²¢C #šÊ[ÅP’AišX¼¤¢ËJ,ÀÆ"Œ’© JÚ’“¶Yƒ>®:èÖ\ÌsM­éµ)¨Œ%j²ôjƒkçW½8Íf†ÙEN6kàhƒlàPŒiCþÊúÏÔëb£‘.öò¢3™:ËN!•!r‘<ô‚hc+_òV¸ï¥°ì˜°RÖB.öR½ŽVEÑÛ³Ý6s݉ž)R“]¿D5êÂBhï\ì Uo—ŠjXY8SϬU‰uõ*Äšª´å)‚}¡*Ë(1¬Òh€‹EÉÖ•ŽäåGÕû^EÝsæ$E1 V”!’` ®ÜDÛŠ}Rd:œR8¥ÙÌÇÑ)+Œ¹ñU/Áñ`¹k®µM¶‘¢X‡t3‚!xðm#–»vÜ*7ÿ–+’À9¼F­´+~jzÉi}šn x4ó-Êl\9q(ÛH¨ó)L$6Îï bfXÕ"Ëï˜ØŒÌ<'›ãÏ3´Lí ˜îZ–i7µ}éL +h¤llj€¤ $„‡Å)ìD6.F”‹†Â–B!ãXè£q¬Õì­`¾Šö›«…·ÜÝl¤pƒŽSzV"§ßxÏxÖ«{N±>ï/UÀ0¿ç+TzÔ‰ xØ’OM$EëQg§ªjv›œç@\=ò±ed  -ÛG´Q(0“”œ›|+gñõ!—âjpÞJ_NM—æ{ºð-"È]×9šÈrˆc²³ÝE1åۢ㼯8ÏäŸU}W᪠QÝHt–`'@ !Š`À¹S“J\ΑDpìt¿º;*ßwE‡$9lZ©Ýã©5‹ä8qUü+9ôÈ·ƒuóÆöŒši}ŒH +mŽ4ÚàodUŽªçÂÛ¨ ¶}„²óqawì”ø'§.õaB¦HŒè'ŸWé±-¬ø°Jmd$SîÓ)ëaî”k9oÓö©ŒTA^уù÷ÝËÍÞÛÙú}@T‘Ó§}èëg°u¿}M³= ¶üCÂÀœTŒ·â‹SˆQƒlÚì7Þ~¡'ÅñçW^rà Œìã‡/ܱ±àô»KûÝö@BJÑ]&èÄ™÷ÁYzA£AeJ5`¾J9zpûüÆÞ¾ ^6ÚvåŠBï=ÜYž·Æ €%Ú¼]r×ÕIÌ®’íqš´}KúÑ›%5¶ #-ú(,ù‚ÇqE‚ÔÑu‹NÅÏÑœ|³$§Û±ÙûNnóÖýì'yÉçaàžÀC§à™Oèºç0“}ô93õ +¶Ho‰©·±§=37i<¤& ZZ R3¿&@,R³[zîY)¥¦öÃÆm.*£•¤Û àÖI«/ékfæf°Åò —Ħ¼»m÷´·pÍÄ^ B_Kßyl梞åŸ2Þ‚ NçïB›Rú_Æ ýrQ[_+@y¥ ßÊú8Œgæ„ýù0Ž9|¼Ü;î tê3ªG Gãž×m·ät“u£”³%Ü3‰Áuö”۵ٻٻí¯nwÆ]=lO»Ìc°:6È(ãz"lMùž5ÇTi“C‘°Ê™)ɪۀu/Ç&ðä|·‘G'=Ö)ä‡LÀkÊÂ}}½„·©¢É!gîp;JÂr—„åŒ6Aµë“ÑI8’püUâmÍw6©"m¥¾äòÛVR9ÙrÇN§}Z´-8¢Ê$úŽÍÇ)Àrå‹@ʆè :¯gé\÷ÚòO>¦Û5^LpQQâ­@ƒ .bO¾¨‚^‹y/ÒÁ[ãë[šMêä䔆5Ú¼s·¿òbš’f(³‰2…¹‘Ò†p~£–Ò¿ÿaÁt³Øq>oû7ªõû5ßÙôõùÇ%´gf¾¶‡*â™N¿ZµÂ‘³, +|æYkZå³w^d['Q—}gЩíÄÃN"Ší%y`¬ããa”,Þj¯°æ.,[A¹—LèWÂïn–‘P‹nµèGÏ +n”¶ö’ˆ­v«³uR<|Òd@ZÖC®I>¥õ3hcIíNçœ]ÄR š¸l¡ ZHAÞe‡˜þ­.,dQŒ|«–ÉÎäÔ¢#š\fӚ­\mZb¤Ï¯È’K¸äˆžLšaÞe‘¡¼Þ®š1œØû Q2 +âK'šüsÐÊ-ï+è ÀæCU¨{O걈˃@šép¤leˆüˆÎÝØÅ~—oD­’ù¤¼”l‰t£©ðKtbȵ¬ŠN†ýÈäËæä¢ð¿Xi·kúµýÐøð¶<Ÿƒ¹3ZÈ¡%÷ot/_è^¾¡ûp¢ûðÇt¿Wà•¸æVágÀèËu]ÃR÷&.eßLg•Ãâº:–±f丽‹¡O}n=S*Vùª`’k«å½ [SäBf*¼’c÷‡-ÇiÝËqÛYñ¾¼^/wo×Ëãëµ\žž‘V•,ª÷»,QÓ, endstream endobj 40 0 obj <>stream +H‰”—ÍŽ$·„ïýý]ËÿŸ«×†O‚aøàØòaÖ€ä÷üE${¦µëƒŒ•¦+£H™™üò—¯÷/?}M÷?üñëýö§Ÿøó% ü#T~„êPûêýrK÷6‡ÿèϯÿ¸ýýþï[ºrnwþ¶ÌßrÿõçÛ—?ÿ-ÝþÏí—;ÿò½õÂïÛ·›Ìo·G+‹‡wZ¾ôê¡9]+žJ»¿Ýü¤ÿßÏãèŒ=Sb,£‡·³·÷[®ç+Äx=0ùíÆÿ½ë×òÐäo·ÞþzÓþÇ»*gáŸûÏm_«æÍRûª£·Ï³´rí\ï\ëU·>Ðê•ú d5¶S¯^m·+­-{¯ïwÓîóbC¬þØx3qŽ•¯9Ûý±öµ ®Y媋Ïl_ö]ï{m¶ç·z»öÆ=yò¦mÖé}²J½c·‘e—«å.{zØ+ËE¹'Þ}vj‘Üó•&.ìm²¹bï%€e[ø¦¤kÉÕëêô‘Y¦§*§/^­@r'<“½Õ°Ë̲‹w=#ø몵ßµtÖ&ÁR \Í6Ùn^+Ƭ"î°·T´kõ¬uøP,ÌØٵ̼Zï:6ŸJÄe^³®°‹‚°ø)açÔµFVH½ý6pnÖ*¹Í>«I 2jmŠWk(âc­y®PãúºclÑ¡Äžulh‡Î4¶´ŽYgläZ–ìØ'aÕ¤<Ü­}Çé…>,ßqºw¦À­&g%ñÉiQÙñKõ2 ÚÔ9‡õŽý4 Ù/bóYÛ¹˜Ñ/–˜éJÞ+ú@ä‰ÞPŒú]vçë¡CÈNr#lMÄòM™Õí¾–º ¥Ÿ\“°óna)Žr°•y[4Êy²a Ej0¨=¡Åsœ_¬‡W㨥¡aÓ—"Ö³k•’¯]÷“ëŽÝû±G¶]÷±w2£+T”R”^£Î#h‘‰@H[¨ë­Ä˜v+ìâ<(|fr«9/úÕJEùͳ¹›Xa¯UÂ=E£,ž(€ˆ`7y”nÔÀª'€´@ˆ„.á<@ãt¢s=#Kï¦ó°@|QˆfJ[f=ËÌ<‚ÐIz“¬&tB*Q¡è2u!ÿï’é"AP2ã3ÎŽ®¼”\¤~Vð(*m=Ð#†¼GlH@±”耪rmâ±WkõaŸ¡Œ‡X6‘!Vš3˱kqqTå)§£X]’WZ2PH¯m J°´•#’ŽE€MhDÊëÃ=æ Ö¬Ež*·Uys©j¬Š´ ¹Èç +ä.KÝ£§‡l€SŒ/z#†þ.ñ.U¼¡6‰Wé/âýPJ‰4 í”Mìœâ”b±{e¦â PÇÉÜlïmG¬ËŽ«ìú L²;G_3¯~ß"Ï1«ÇSvDT "@cD“QÀäèIþTl±Âõa¸ê-—ÆGÕm…ÜOh$›£]#‰‹”t%AôjtkcÄû1åYLqø¶â ‰X½Lu4¬Ÿ}€!êƒýŒØ‘¸™Y&CI|dYÅ…-g3îmS˜é†N£ªë„£9Ú?õp]TNã`¡›†Ìq’ +ÐVîkŽÕ ûd¹‹‹¡^©¹Ã±Æ)YÕšTÓ”:"MoýŠdéÓº#`º÷“;Ä Õðb¹‘à>FvŸh@¥G€¥ ê~ìÆKÖÑÐs5ö 7Ç·(½ç ÇÅð-žwÿ]ß7)ŠàdI†pÒÏU¤Ór8¶zLWíb@ô”)ªÉZ‰Ö¶†Ù¤1”—cØœ“²`¸#ìèŒÌÑã=ìÐðËXYµ} +jºXú©ë€MªX95 súvÃyŠ¶ŸaÈ\r–뛘E›‡ÝE&5ã2S4eÑ@Q‹8ŠÜ?¥$ö€N~€ª[ΘÑ`¹OÇTÍ—¹BdI,qiDb Š¢L‡eµm9[®ž1Ç­Þ£Ä*cºù’È^R&ú ïÕL µøÛæˆáe™2”5EøÑ›5)JáÒåFˆŠ€l‰+öØaë`6uÌa;ùØ +•m)ì¬"zª™¬äAÝÔy’›Î÷°TLÒK~ªžwù,ëßoå˜RÖ$ÒU—ªýÚK?ÄC¥œ®cQEÅ4?£j“t\[. ²²ê)Úr¤º¤\#G k¾Þ²p¼Wˆ0ë>Ö:a¶(Âà #HVw)¤;¦ELWÓdñYªFjÔSHŒºi«¸¢ÙK5Oˆµ™1M°%äˆÉ‚™}íyèE;ßhf‰i”·¥[]Š|”í4L¡í²‡ë'2 ®%¥ú*·ƒ(BôÝ¥€å°Uñ=Àw\º«¨MŇîQéuv62”>¶«í^ºm§.)þ˜Oß ¼µw#Ñ<àtÝaæ³™ ÄdÛÍE£˜á5”Ú…¹êñG6QsœIÎvûž?ü‘r‹¥uk–ÖæÚƒ¹%‹­5«•HÔüÿˆ­ZäMäUŽ +ÄøäðÂULQÝ wõ˜"Ž*êò{¹HX'®¶O“ŽbGn1>!9b!€Z#¥Ò‘åpx·,TºÕ>ÐJ¤·?M~¤'ÜR¢§…:÷š(›ö¨ˆº–ñÝãÔÓ³!íÑù€B6| ~¹ñ Õ L=Ïo·ðÁó-+¾WÒàp£•Ô}T‰ +ç,\kÔ>dßÂî*AÖ'ÝË ßVV8Š÷…Ê‹Î#ïÈ}%)Ù_=ŽÚtlâB¾öc£í§ºÛT7¥Ûh\éè}&Ñ;»ZÓ—¸°¥Bå~ö’^hóRŽJC[ïº;è²ù"sl[ärXãÙ*½nÖ½VÒOß½”ª/]\{€WT#£» Ÿ—e><ói#Z‘gìöÝóý=Ÿ8=ú9.¬ç*ÿúþ¤M,&Ä®NԂϾÕ¦êj+ÓíO!'–—P/ÞÕ}Ξå²_zv´­nQ´s§[O®§uå’Ç.4'i–obÜGªf‘ÕK ¹tΉÔW×\RãøiGÆÒ¶¸Iâ7.ž[_Ôå5©—æbä´-Ü*øܢŭæeÛßûªà.?M¬Ø‰½°B­u>¬ˆg±£Ùa¹º½~´ÖîÑ懕r€½?,x”•çÇÔ­e1mîʲßÓ<è²öívrõ¡~jê„'Ë'ß$ßW¶ŠÛ¨þˆ°h  „¢³Fò%%i*gŸ©²ËË”Àû>_f@ò1>Âú´piŸÏ—Œd8‘bþ1Øó&*÷ØN1+“zõ¢.¾ÞÕ D´Ûh‘êê{\Tfû_±äÞºðpQ3¦>ùóZ‰—)¥éTÌ´ûg +[·ží³Á(bOQ ÔGîW@Áÿ²^I  ðî+üÑ$Š×jN§ÿÿLC€QOÖ[v‡D‚d¿Eˆÿž- +"÷Tt%PqoGƒÔ9æ¿`•±­ |„¨—ƒBUkõ01æïH’¸%Ï[ÔOfæˆr q©$Ÿ–ü„GxºÈ}Tî$¾D(sråG°Ëýbl©íÀ‹WÌý×`öîß»eÔl:‘« +•q‹Û/Ãa|„('‡Ñé ƒÙ#ÒsÝ'âN4ßÛÒ6Ýgi»mÛ× +ä©éL‘£¾ÍO€"6…W endstream endobj 39 0 obj <>stream +H‰dSAŽ! ¼ó + =Ø ×L¢œVÑ*‡<`”ì%»Ònþ/¥lf¤D­!ªÀ…«h.ß®tyºVúôùJåˆ˦äL陲3Õ6UY¤Æ&•>^Êåë÷J/J¥JmÆÿãgùUÞË›úAo%Š¦uŒ½fñ;ÂO¨ n&ƒÔ¸«Ý^Sñµ2Y!aÜÔèw9K$ÂlâÚ[`¥XU¤Ã): dB·r(ΧÁÝWTJÏnp¤˜>ˆš=(D.› gÛp&”5SÍØעŽ§ž:°“ +öù˜ð¢ÊB‡Î˜T©óZ#7vK%‡{êìÛbSÆ8O‡ÞñÒ„!þ£WÙëj±Šj@I1SnÑóD.Qì7v™w¼úÆ0Èz ¢HÒ¡UnidݳŽ3eoö`Öf¦ŒìÍ£)‰–=ñ€V®•^;ò?£0”Äá2Øm=˜™ÄÄUÜš-q$žë°šˆ±ÂQ^£³Åí#nµñ`t3¸€2ûÞ07ÖºËÜ"죅d¸ +…Êw[®™êâ%}ûªØSsÇ0¢õ·{µO AYÜàÿÀ(eèY`q`Ô4¼Š/,·Ì|7¼¨çÿd?¿Ñq¦üLͨçòW€‘Î… endstream endobj 38 0 obj <>stream +H‰ŒWKnG Ü¿SÌÞ¨ùéß6r•YäBâÍs€8÷RUEr´ KbÍt7›,9O??OŸŸÛñççãöãgüx*È>BþŠ‚þºµ#çÐÿ;|ûýöÛñçÍŽvŽåøiÇ·/·§Ÿ~mÇ—¿ox„vØšç°½Œv¶î~¼|½ñÑ×[ösöãn駛»E!caÉ8Ó®7vÚkgÙëx¹ÙösN;î{œø;ØŽsný\c¶óÌ =O§g”¹ôuŸØpaCø bƒG®8mÙ» +{™ÓΦyz :1pûŽ3¢íÓrÒ‹a¸*!Ã[Ö÷¹-ØiÚ˜õFÚÆ>OÒuo~6§/  +ÄN\Æ÷3Ëœ:ì¶G-p]çÞ ÷Êȉ={Ü»_®ÚÓ{G Z/ °-lI`œáÉ}piÅñm«s,ÎE',,Z§ç.» Ù³3l»áEía8¹#Bøcœî‹»ç%­#ÕSåÊŽT%“u~!øãå6>+.§™½y`K[eú^4i0FS~€"xŒ$‰c°—%;sŸrJR¾Üþ¸ý"Z¯èøÙ›“Öïè +%Ï‹Í°ýFçègg> ) €±ËÞéG Ã{‘ 9lW”ç“–´ÅÕfâfÜÂ:X\éd0ì5Á›ÙA†.;€ÓžN †ÂŽ´sãnªªÆ»²j dž{]U”È%žÛkUÍìôÃõu÷l§OÚ;R8 +ZŸw׆-¦€†êÐ:ýð@fe§?ľ؀غ_^Àea2-2‡Ñ‰{ f6ác‹¨È]2‹½ ÒìŽãlÏ:Å„ç“>ÞPM ¤Š(:Uø½ HñÿÜÃË6rþÍ2Û”#f`;·pl®¢"²1uæCI_¸o%[.s!ÑEãœYOF#‘ï5^消2Qœ4ý2[”#¨Æ iMZu'Xš,½¦H€zЙï©üB¿Qäa‘›dž<ù—ÊwÐjKö×µûÎÓ·IÊÁ RÑ.`*x X)F:x3h¤{Å:¦¬MF“v,r©áÚŽ +#§”wÝ”Cè»ègànJõ½/ˆ®Ø! —¢XCl •gá9ôKlÔ¦ œ!‚†¢/ +h)mÖ¢iÒYDnédêÃãÞqAª;¿IV6È.'Â;Ófø`§+®˜vÙ¤/·.|TwÆÁo6üŠË‚ºÑrYWP8SãH EM5 ë¤B7ðþ½6óß÷Lå·U4(¢÷yÓd²¯¼§R> +ØoþËö^÷¥ “Ý ÚIÙ`4Ä|jƨÅÎÉÕOÓ*âaÆ~5÷•jg-ϼV¦¥V3ªp˜ùë~™ÔXŠ[É0J‡7Èú¨ÙHÙ‰`±ñÊÞ£R0Á/*¹~ñ_6²YBr‰¥Èï¬2»¦<Ê?ÍÐì¶z徤nõëÊš>s pøBà´:?P ÌšƒÑã—JÍÓ´MÖ—(‘AâÊNÙÝk_Ò»ÔŒJ_øÁŽ“šB4QàÇñ9õ`ϲ»Æ(ÊS\ápVMgÿW@Ló'¡´ë9{ÛÅ6…J¼àÜ`@˜<™ ? ꈽcퟟÛÓÏÏÇÓçç<~øë=Ô?Bã#4?BëôËíçÌ`¼ endstream endobj 36 0 obj <>stream +H‰ŒWËŽG¼×WÔtM’ÌçÕccO‚aøàxíÃÈ€äÿ6"˜ÝÓ’±Ø…€Q1:++“ É—Ÿ_Ï—O¯åüáÇ×ó(—Y=ñ·þúùõãå_¿–ó¿r–Ó|–³Žy^ϯ¿ÿ>~ú„·^rË=¾`i{ñOXùÛù×Á-ûtü l­¿œ€¸íi½^áý¬Þ®åmoŸõÁÏG­—·vÞ,ÆÕðÕw"µ‘y'ì¹VÚŽík»¢{Úõ|;lö«@+®Rö°9®Ú&¿ÖØÄ^³Ã®øßOþî&³k‹Ö¯aÜtôkY` Žó—­v¶»=K§]u,¸Ë­ó­]ÜÃ×Â1d¬žÐí´†ÎqÞ¢”kõ ®ÙW>¸¯«NÞµ«úÄ6@J[‰”a§Ï«ZKÛæ¢muÛ}ö¸U|¯ò;hÒ­·†¸Ð%ýêçlv6(¸JÏò¥R&÷Á]y”Ùpg:@Ÿ3ö<ÚD”Kq´¾íQ·°ŠÈ6úû›Ó·À&¢M¨\Úv,®ÁÁcSo…ˆAdÊ1WÓ­ñËѶ»glÚðEw˜| fÇÁ†‚ãhp^{—”k`5Q„AUœ}ù¥gpQ+þ=¥"oÇBä&üÿàt€ÁÁ£”q• €4¯‰„3è­ž6™ ‡[™ûwðdíù6»Ói1|Ö„”…À^Œ1ìÞÑ®Æ7ârdÁÛQ#IÀÜr°îH;Û*(E›¯Ðža´‡Í{Óxßòpбó Ž8âZ‚Þâîû!zfôMÚ–¤vĹ&¢ŠÔ~uo›qÂtù ¦Ã×°KŸi×¥øáL!õ^¶TZkJjݼo–kò‹@°FÏÞ˜$bF\+I Ç®:†¤í#í`T½¥íÑE%«; !Mt2d o`çûX´|&R<ñÕ6bIêXû +ürõ\A¹×4á6X¾-èN’º}mffá8 k­Â Üðo)ý_TÚ;¥ Nªà#’f~Pš‚â ©”¼Êù€ª'"m딥ÎÚ€+´¼K"!5Ò ‡ÜY‘Fnê rø™Àƹ˜ØÉ—¨™²«ä­Ñ$%òe¹²ШkCåbInh ã‰ÌnÓ<ãZŠ% [Ùa„{"!)³1½ŒÂ?Tx.–0­¨M|XÐ’<"ôOˆÐêûó…Dçj†šd- pÇXƒn^‡¨áÜÆ+"J ¶ä “…•ý >["qg(£Ayœ¡Â¢«Íü²M܉W#0=–<ÃkÌ"ž—sê—Cñ܆NEÁ¢Ptä$Ã5::(ÔI~¦~7-(´ô‘$ä±}TEÓ‚Bv[à‘kÖ#è¶e<œ=Lëò3¼4É*„d(ÒÖÿKıb€è¢Æö'ÂãBEõán¡ãò²s³P¬pÇ©ò µbì]Ì»›a–¼‹DK™S{"öµÇ¹îÏKé-åVU«ùwA3憘8ì‹B‚†ÀBËƨ¬Ö’óQnÕš S²½aJ! áò…㑨¡ã!Ay.ˆ!Ï#Ñ¥bØv¨G"Bº ÂöÈó2[š…µ3V@ÄRøÀÂtDÓ„—E'bÊY§œª1oV%± ªY9€x©‰{¼dPeÔ‡ÜÍk¡‚©‘ìrÐYŽ'ãÔFÚÕ"¦ò^ìI,…"ÇTgk¡üÀšÊ¢›h$ªu$ {.¬`3Þ¾«~_u»g‹TÂ&C}À`œwÙÏÓ 7«’èµå…îãÈm<•bOÜ&³ùÝôw~ߤ ¤3ÛÖ`ÍFo÷à7œ?™À i>X „ \ƒ&™È)Õ´ž¦æ#òN‚Î Ô`#Lj,M”šƒ²lé.Ï›Ý:šQÒš6« m:˜‘æ@Aó-‚4+¹ØXø{f§«44É ,x®h5íŠ*Þ¨}ÛE ‚JéáËÐÐÀ¬Àš¥§ JRl§,+)$´Z_P©yòßðÍ6u–’‰kTgŠ¸ø—ê*ÿS[U~<§˜Uéˆ:iŠûWä‘iÝØòá ÐÏ–¤ÙH„Ðf—Ìq…½ ßØýh9ŽpN ²`ÓÄÕ`Ñc´"-—Õ—_yüW|+± jmI0ô ={VbþûVÓxÆJÑžÚè›8˜·‹²óbrß/ÃT ^ÖBöhù;%0I=T…ªh†t-*SSn¡Éææı¹1ÐÆÇJY÷}þüþº‹.º 4 õîqYP˜]AÉ*ÍÞ=îTßñç˵»h:öîjùÒ¤f»U¤\ëYF’Àìæö”µrV¬àêRKªX5É—é¬E'fÈÒC÷H=šJ_"Q8}~Ø™º›¥‰‰*4RK@#®3”'ïÚúÊvã~&Ö jâãÔß;«# SŠÜ€Øôo+gG(»fò™á¬Ë¶½˜? •sÛ]ª&ƒª6ön²ÑZj6€®µáhbLÒ—5l&¥Pd>;oÈ"N“_¦ÿM(α±"/ÁONŠO'þ'2YMÅ]Ω *öi»À“lßž„™sëÇ[! ØO/q\=3ʼk(ÛÆâŠÂÀhÝ ’ 3¯þâ«$‰a†ÝûŠ~ 3Ö<£ÿÿLåÛSrh{é)±ÆH–`æ5âuᑺyŸªŽ§V°B¾lH©ÇÅñŽL!ÖvBóʈ§ÛÐ>ô"§Ë1T»<† ò5]¹9QyŽv,¡bÚ}ŒÆ_¹^ý@#g‡“½Ò.°+é€* ×δEc×M¶5`'˜aq¥µùׄšÎÚ!—&¼>¸19<͆ÿ‘Âw\.×WT]jDäo¢2+bóÚ(ût +ïïÛ:'êyüXÚ%¡l%¡ü­$À*Ãöä+t–^ 5wz‡jˆ’î|Þ¶â¹H„®){¶oN~@õ6 c`?ÕäæyœE:&·RÃB‘®Y>Ä®0L¸?‘2Z×"Ö5Bu‡Úõ;4ô¼½«©w\ endstream endobj 34 0 obj [33 0 R 32 0 R 31 0 R 30 0 R 29 0 R 28 0 R 27 0 R 26 0 R 25 0 R] endobj 68 0 obj <> endobj xref +0 69 +0000000004 65535 f +0000000016 00000 n +0000000259 00000 n +0000031032 00000 n +0000000000 00000 f +0000031125 00000 n +0000000000 00000 f +0000040660 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000040733 00000 n +0000040929 00000 n +0000043481 00000 n +0000109069 00000 n +0000174657 00000 n +0000000000 00000 f +0000031560 00000 n +0000031989 00000 n +0000032408 00000 n +0000032837 00000 n +0000033266 00000 n +0000037240 00000 n +0000037317 00000 n +0000037392 00000 n +0000037467 00000 n +0000037535 00000 n +0000037606 00000 n +0000037674 00000 n +0000037748 00000 n +0000037824 00000 n +0000229970 00000 n +0000033738 00000 n +0000226999 00000 n +0000040547 00000 n +0000224964 00000 n +0000224412 00000 n +0000221438 00000 n +0000215079 00000 n +0000204609 00000 n +0000206481 00000 n +0000034216 00000 n +0000038943 00000 n +0000038827 00000 n +0000038858 00000 n +0000038711 00000 n +0000038742 00000 n +0000038595 00000 n +0000038626 00000 n +0000038479 00000 n +0000038510 00000 n +0000038363 00000 n +0000038394 00000 n +0000038247 00000 n +0000038278 00000 n +0000038131 00000 n +0000038162 00000 n +0000038015 00000 n +0000038046 00000 n +0000037899 00000 n +0000037930 00000 n +0000039293 00000 n +0000039577 00000 n +0000206840 00000 n +0000207089 00000 n +0000230051 00000 n +trailer <<02D05590927C4EC98F5747C8C4CC9FAD>]>> startxref 230243 %%EOF \ No newline at end of file diff --git a/src/server/app/web/public/images/starlite-favicon.ico b/src/server/app/web/public/images/starlite-favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..816dc1143045dc8ceee4f6ba9c89661571ab8031 GIT binary patch literal 9662 zcmeI2F^d&35XWO}XJIE;oFG_uV55SCg(BEoqlJhF3fkDb#zKTEt!%8dR%~soEG?|> z8~6$Q0_*<({Gyj?S&*Tm+gmeA(;bG{1UJhTcgm5v0aJ3)3 zC_L{6^6l3_2p7(uj#EJhHx4d!XQMm@ckeyu7;BB$i%;LXJGXDG693KX*SfdA{;m=` ze0lQzV@Leg${k{V^lGzH{L~&isEr}Gk59Ut*Y3loFSk6X#sB8p@9y27f7O21+9^2? z4{CY{IV1M3zx><_{NSjmL(YQ#(dKwI{P&L@7ss@Q%hU?k8Q93>ckJ7S9XMLjAK(sn zIG@8q&lLWlv)Ct3CH7N#(6RY(vgIl3)H&pwD~Tz!lJiw|@pZ^%$)0r4D~9r|xDLIi z;u-i;*x(B~TGqCF!0xjTpQHU=J%ux=oWn2n8L?Qe~ANC-inHhTz9f$!+e~ zgM;8eZaFpQdtm+cK7bYM-~pcoapfMkBx8o>=upo>rnA=0oNMm`80Z-m6Ee=JXY!e$ zI@M>-r#W$3-7z18NwcjN$?VL&uVrgv?lnGGJT+^ubAN7(IsLY7Yw*JxxJ1v1jU{~> z>qCvd{w)5}zvyRE`!4r=?RtAHJ_|2BZ3<@Y@_yO=-2$IxjwSnzxR&ZW{>`;9A6gTysr(VP z+#JIWACSZ2A)M4w%17i=dP@#B`!VeN4yM@U@QW+V#5~49YFheAFqNM1*s<;7mBX*! zp{-5To%KcewCAR*u`6Dno7lzldHfa=_xT*VCz*U92b||EK&JgMv;8|Mr_bXjXa21# z#RG@9k1syYrG5xIwZ+?zyXWzP0j?`|%&q%=3X`zIozi*&o3Ii$>6R|`tX%u8XY9dM z^@~#d)P?Yqd)>o->PCB|@zDL6nHY}EvBmE(+PxAk)?jXRRv1$p(c49STiI->NBAvw ztbXDShv1Tx@5@^FhkB&?X>DyS;UoBSZ@8jbe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw a}}}},e.exports.default=e.exports,e.exports.__esModule=!0},9842:function(e,t,n){var r=n(9754),o=n(7067),i=n(8585);e.exports=function(e){var t=o();return function(){var n,o=r(e);if(t){var a=r(this).constructor;n=Reflect.construct(o,arguments,a)}else n=o.apply(this,arguments);return i(this,n)}},e.exports.default=e.exports,e.exports.__esModule=!0},9713:function(e){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},9754:function(e){function t(n){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},2205:function(e,t,n){var r=n(9489);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},430:function(e){e.exports=function(e){return-1!==Function.toString.call(e).indexOf("[native code]")},e.exports.default=e.exports,e.exports.__esModule=!0},7067:function(e){e.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},6860:function(e){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0},3884:function(e){e.exports=function(e,t){var n=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){s=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}},e.exports.default=e.exports,e.exports.__esModule=!0},521:function(e){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},8206:function(e){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},8585:function(e,t,n){var r=n(8).default,o=n(1506);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},9489:function(e){function t(n,r){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,t(n,r)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},3038:function(e,t,n){var r=n(2858),o=n(3884),i=n(379),a=n(521);e.exports=function(e,t){return r(e)||o(e,t)||i(e,t)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},319:function(e,t,n){var r=n(3646),o=n(6860),i=n(379),a=n(8206);e.exports=function(e){return r(e)||o(e)||i(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},8:function(e){function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},379:function(e,t,n){var r=n(7228);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},5957:function(e,t,n){var r=n(9754),o=n(9489),i=n(430),a=n(9100);function s(t){var n="function"==typeof Map?new Map:void 0;return e.exports=s=function(e){if(null===e||!i(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return a(e,arguments,r(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),o(t,e)},e.exports.default=e.exports,e.exports.__esModule=!0,s(t)}e.exports=s,e.exports.default=e.exports,e.exports.__esModule=!0},7757:function(e,t,n){e.exports=n(5666)},2840:function(e,t,n){"use strict";var r=n(319).default,o=n(7757);n(1539),n(8674),n(9601),n(2222),n(1249),n(8309),n(7941),n(7327),n(4916),n(3123),n(7042);var i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.bundleDocument=t.bundle=t.OasVersion=void 0;var a,s=n(2307),l=n(8604),c=n(9079),u=n(8553),p=n(4343),f=n(7649),d=n(9562),h=n(3353),m=n(6230),v=n(8140),g=n(4241),y=n(2806),b=n(9272);function x(e){return i(this,void 0,void 0,o.mark((function t(){var n,i,s,v,y,b,x,w,E,S,_,O,A,R,C;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.document,i=e.config,s=e.customTypes,v=e.externalRefResolver,y=e.dereference,b=void 0!==y&&y,x=m.detectOpenAPI(n.parsed),w=m.openAPIMajor(x),E=i.getRulesForOasVersion(w),S=d.normalizeTypes(i.extendTypes((null!=s?s:w===m.OasMajorVersion.Version3)?x===a.Version3_1?f.Oas3_1Types:u.Oas3Types:p.Oas2Types,x),i),_=g.initRules(E,i,"preprocessors",x),O=g.initRules(E,i,"decorators",x),A={problems:[],oasVersion:x},R=c.normalizeVisitors([].concat(r(_),[{severity:"error",ruleId:"bundler",visitor:k(w,b,n)}],r(O)),S),t.next=11,l.resolveDocument({rootDocument:n,rootType:S.DefinitionRoot,externalRefResolver:v});case 11:return C=t.sent,h.walkDocument({document:n,rootType:S.DefinitionRoot,normalizedVisitors:R,resolvedRefMap:C,ctx:A}),t.abrupt("return",{bundle:n,problems:A.problems.map((function(e){return i.addProblemToIgnore(e)})),fileDependencies:v.getFiles()});case 14:case"end":return t.stop()}}),t)})))}function w(e,t){switch(t){case m.OasMajorVersion.Version3:switch(e){case"Schema":return"schemas";case"Parameter":return"parameters";case"Response":return"responses";case"Example":return"examples";case"RequestBody":return"requestBodies";case"Header":return"headers";case"SecuritySchema":return"securitySchemes";case"Link":return"links";case"Callback":return"callbacks";default:return null}case m.OasMajorVersion.Version2:switch(e){case"Schema":return"definitions";case"Parameter":return"parameters";case"Response":return"responses";default:return null}}}function k(e,t,n){var r,o={ref:{leave:function(r,o,s){if(s.location&&void 0!==s.node){if(s.location.source!==n.source||s.location.source!==o.location.source||"scalar"===o.type.name||t){var l=w(o.type.name,e);l?t?(a(l,s,o),i(r,s,o)):r.$ref=a(l,s,o):i(r,s,o)}}else y.reportUnresolvedRef(s,o.report,o.location)}},DefinitionRoot:{enter:function(t){e===m.OasMajorVersion.Version3?r=t.components=t.components||{}:e===m.OasMajorVersion.Version2&&(r=t)}}};function i(e,t,n){b.isPlainObject(t.node)?(delete e.$ref,Object.assign(e,t.node)):n.parent[n.key]=t.node}function a(t,n,o){r[t]=r[t]||{};var i=function(e,t,n){for(var o=[e.location.source.absoluteRef,e.location.pointer],i=o[0],a=o[1],l=r[t],c="",u=a.slice(2).split("/").filter(Boolean);u.length>0;)if(c=u.pop()+(c?"-".concat(c):""),!l||!l[c]||s(l[c],e.node))return c;if(!l[c=v.refBaseName(i)+(c?"_".concat(c):"")]||s(l[c],e.node))return c;for(var p=c,f=2;l[c]&&!s(l[c],e.node);)c="".concat(p,"-").concat(f),f++;return l[c]||n.report({message:"Two schemas are referenced with the same name but different content. Renamed ".concat(p," to ").concat(c,"."),location:n.location,forceSeverity:"warn"}),c}(n,t,o);return r[t][i]=n.node,e===m.OasMajorVersion.Version3?"#/components/".concat(t,"/").concat(i):"#/".concat(t,"/").concat(i)}return e===m.OasMajorVersion.Version3&&(o.DiscriminatorMapping={leave:function(n,r){for(var o=0,i=Object.keys(n);o1&&void 0!==arguments[1]?arguments[1]:"";if(!e)return[];var n=require,r=new Map;return e.map((function(e){var o="string"==typeof e?n(u.resolve(u.dirname(t),e)):e,i=o.id;if("string"!=typeof i)throw new Error(d.red("Plugin must define `id` property in ".concat(d.blue(e.toString()),".")));if(r.has(i)){var a=r.get(i);throw new Error(d.red('Plugin "id" must be unique. Plugin '.concat(d.blue(e.toString()),' uses id "').concat(d.blue(i),'" already seen in ').concat(d.blue(a))))}r.set(i,e.toString());var s=Object.assign(Object.assign({id:i},o.configs?{configs:o.configs}:{}),o.typeExtension?{typeExtension:o.typeExtension}:{});if(o.rules){if(!o.rules.oas3&&!o.rules.oas2)throw new Error('Plugin rules must have `oas3` or `oas2` rules "'.concat(e,"."));s.rules={},o.rules.oas3&&(s.rules.oas3=y(o.rules.oas3,i)),o.rules.oas2&&(s.rules.oas2=y(o.rules.oas2,i))}if(o.preprocessors){if(!o.preprocessors.oas3&&!o.preprocessors.oas2)throw new Error('Plugin `preprocessors` must have `oas3` or `oas2` preprocessors "'.concat(e,"."));s.preprocessors={},o.preprocessors.oas3&&(s.preprocessors.oas3=y(o.preprocessors.oas3,i)),o.preprocessors.oas2&&(s.preprocessors.oas2=y(o.preprocessors.oas2,i))}if(o.decorators){if(!o.decorators.oas3&&!o.decorators.oas2)throw new Error('Plugin `decorators` must have `oas3` or `oas2` decorators "'.concat(e,"."));s.decorators={},o.decorators.oas3&&(s.decorators.oas3=y(o.decorators.oas3,i)),o.decorators.oas2&&(s.decorators.oas2=y(o.decorators.oas2,i))}return s})).filter(h.notUndefined)}(n.plugins,o):[],this.doNotResolveExamples=!!n.doNotResolveExamples,n.extends||(this.recommendedFallback=!0);var w,k,E=n.extends?(w=n.extends,k=this.plugins,w.map((function(e){var t,n=function(e){if(e.indexOf("/")>-1){var t=e.split("/"),n=r(t,2);return{pluginId:n[0],configName:n[1]}}return{pluginId:"",configName:e}}(e),o=n.pluginId,i=n.configName,a=k.find((function(e){return e.id===o}));if(!a)throw new Error("Invalid config ".concat(d.red(e),": plugin ").concat(o," is not included."));var s=null===(t=a.configs)||void 0===t?void 0:t[i];if(!s)throw new Error(o?"Invalid config ".concat(d.red(e),": plugin ").concat(o," doesn't export config with name ").concat(i,"."):"Invalid config ".concat(d.red(e),": there is no such built-in config."));return s}))):[v.default];(n.rules||n.preprocessors||n.decorators)&&E.push({rules:n.rules,preprocessors:n.preprocessors,decorators:n.decorators});var S=function(e){var t,n={rules:{},oas2Rules:{},oas3_0Rules:{},oas3_1Rules:{},preprocessors:{},oas2Preprocessors:{},oas3_0Preprocessors:{},oas3_1Preprocessors:{},decorators:{},oas2Decorators:{},oas3_0Decorators:{},oas3_1Decorators:{}},r=i(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(o.extends)throw new Error("`extends` is not supported in shared configs yet: ".concat(JSON.stringify(o,null,2),"."));Object.assign(n.rules,o.rules),Object.assign(n.oas2Rules,o.oas2Rules),b(n.oas2Rules,o.rules||{}),Object.assign(n.oas3_0Rules,o.oas3_0Rules),b(n.oas3_0Rules,o.rules||{}),Object.assign(n.oas3_1Rules,o.oas3_1Rules),b(n.oas3_1Rules,o.rules||{}),Object.assign(n.preprocessors,o.preprocessors),Object.assign(n.oas2Preprocessors,o.oas2Preprocessors),b(n.oas2Preprocessors,o.preprocessors||{}),Object.assign(n.oas3_0Preprocessors,o.oas3_0Preprocessors),b(n.oas3_0Preprocessors,o.preprocessors||{}),Object.assign(n.oas3_1Preprocessors,o.oas3_1Preprocessors),b(n.oas3_1Preprocessors,o.preprocessors||{}),Object.assign(n.decorators,o.decorators),Object.assign(n.oas2Decorators,o.oas2Decorators),b(n.oas2Decorators,o.decorators||{}),Object.assign(n.oas3_0Decorators,o.oas3_0Decorators),b(n.oas3_0Decorators,o.decorators||{}),Object.assign(n.oas3_1Decorators,o.oas3_1Decorators),b(n.oas3_1Decorators,o.decorators||{})}}catch(e){r.e(e)}finally{r.f()}return n}(E);this.rules=(a(l={},m.OasVersion.Version2,Object.assign(Object.assign({},S.rules),S.oas2Rules)),a(l,m.OasVersion.Version3_0,Object.assign(Object.assign({},S.rules),S.oas3_0Rules)),a(l,m.OasVersion.Version3_1,Object.assign(Object.assign({},S.rules),S.oas3_1Rules)),l),this.preprocessors=(a(g={},m.OasVersion.Version2,Object.assign(Object.assign({},S.preprocessors),S.oas2Preprocessors)),a(g,m.OasVersion.Version3_0,Object.assign(Object.assign({},S.preprocessors),S.oas3_0Preprocessors)),a(g,m.OasVersion.Version3_1,Object.assign(Object.assign({},S.preprocessors),S.oas3_1Preprocessors)),g),this.decorators=(a(x={},m.OasVersion.Version2,Object.assign(Object.assign({},S.decorators),S.oas2Decorators)),a(x,m.OasVersion.Version3_0,Object.assign(Object.assign({},S.decorators),S.oas3_0Decorators)),a(x,m.OasVersion.Version3_1,Object.assign(Object.assign({},S.decorators),S.oas3_1Decorators)),x);var _=this.configFile?u.dirname(this.configFile):"undefined"!=typeof process&&process.cwd()||"",O=u.join(_,t.bD);if(c.hasOwnProperty("existsSync")&&c.existsSync(O)){this.ignore=p.safeLoad(c.readFileSync(O,"utf-8"))||{};for(var A=0,R=Object.keys(this.ignore);A-1}},8604:function(e,t,n){"use strict";var r=n(3269).default,o=n(7757),i=n(3038).default,a=n(1506).default,s=n(2205).default,l=n(9842).default,c=n(5957).default,u=n(4575).default,p=n(3913).default;n(1539),n(8674),n(4916),n(3123),n(4723),n(6992),n(1532),n(8783),n(3948),n(189),n(1038),n(6699),n(2222),n(8309),n(7941),n(9601);var f=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.resolveDocument=t.BaseResolver=t.makeDocumentFromString=t.YamlParseError=t.ResolveError=t.Source=void 0;var d=n(3817),h=n(6470),m=n(8575),v=n(4756),g=n(8140),y=n(9562),b=n(9272),x=function(){function e(t,n,r){u(this,e),this.absoluteRef=t,this.body=n,this.mimeType=r}return p(e,[{key:"getAst",value:function(e){var t;return void 0===this._ast&&(this._ast=null!==(t=e(this.body,{filename:this.absoluteRef}))&&void 0!==t?t:void 0,this._ast&&0===this._ast.kind&&""===this._ast.value&&1!==this._ast.startPosition&&(this._ast.startPosition=1,this._ast.endPosition=1)),this._ast}},{key:"getLines",value:function(){return void 0===this._lines&&(this._lines=this.body.split(/\r\n|[\n\r]/g)),this._lines}}]),e}();t.Source=x;var w=function(e){s(n,e);var t=l(n);function n(e){var r;return u(this,n),(r=t.call(this,e.message)).originalError=e,Object.setPrototypeOf(a(r),n.prototype),r}return n}(c(Error));t.ResolveError=w;var k=/at line (\d+), column (\d+):/,E=function(e){s(n,e);var t=l(n);function n(e,r){var o;u(this,n),(o=t.call(this,e.message.split("\n")[0])).originalError=e,o.source=r,Object.setPrototypeOf(a(o),n.prototype);var s=o.message.match(k)||[],l=i(s,3),c=l[1],p=l[2];return o.line=parseInt(c,10),o.col=parseInt(p,10),o}return n}(c(Error));t.YamlParseError=E,t.makeDocumentFromString=function(e,t){var n=new x(t,e);try{return{source:n,parsed:v.safeLoad(e,{filename:t})}}catch(e){throw new E(e,n)}};var S=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{http:{headers:[]}};u(this,e),this.config=t,this.cache=new Map}return p(e,[{key:"getFiles",value:function(){return new Set(Array.from(this.cache.keys()))}},{key:"resolveExternalRef",value:function(e,t){return g.isAbsoluteUrl(t)?t:e&&g.isAbsoluteUrl(e)?m.resolve(e,t):h.resolve(e?h.dirname(e):process.cwd(),t)}},{key:"loadExternalRef",value:function(e){return f(this,void 0,void 0,o.mark((function t(){var n,r,i;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,!g.isAbsoluteUrl(e)){t.next=10;break}return t.next=4,b.readFileFromUrl(e,this.config.http);case 4:return n=t.sent,r=n.body,i=n.mimeType,t.abrupt("return",new x(e,r,i));case 10:return t.t0=x,t.t1=e,t.next=14,d.promises.readFile(e,"utf-8");case 14:return t.t2=t.sent,t.abrupt("return",new t.t0(t.t1,t.t2));case 16:t.next=21;break;case 18:throw t.prev=18,t.t3=t.catch(0),new w(t.t3);case 21:case"end":return t.stop()}}),t,this,[[0,18]])})))}},{key:"parseDocument",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.absoluteRef.substr(e.absoluteRef.lastIndexOf("."));if(![".json",".json",".yml",".yaml"].includes(r)&&!(null===(t=e.mimeType)||void 0===t?void 0:t.match(/(json|yaml|openapi)/))&&!n)return{source:e,parsed:e.body};try{return{source:e,parsed:v.safeLoad(e.body,{filename:e.absoluteRef})}}catch(t){throw new E(t,e)}}},{key:"resolveDocument",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return f(this,void 0,void 0,o.mark((function r(){var i,a,s,l=this;return o.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=this.resolveExternalRef(e,t),!(a=this.cache.get(i))){r.next=4;break}return r.abrupt("return",a);case 4:return s=this.loadExternalRef(i).then((function(e){return l.parseDocument(e,n)})),this.cache.set(i,s),r.abrupt("return",s);case 7:case"end":return r.stop()}}),r,this)})))}}]),e}();function _(e,t){return{prev:e,node:t}}function O(e,t){for(;e;){if(e.node===t)return!0;e=e.prev}return!1}t.BaseResolver=S;var A={name:"unknown",properties:{}},R={name:"scalar",properties:{}};t.resolveDocument=function(e){return f(this,void 0,void 0,o.mark((function t(){var n,i,a,s,l,c,u,p;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:p=function(e,t,n,a){function u(e,t,n){return f(this,void 0,void 0,o.mark((function a(){var l,c,p,f,d,h,m,v,y,b,x,w,k;return o.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!O(n.prev,t)){o.next=2;break}throw new Error("Self-referencing circular pointer");case 2:if(l=g.parseRef(t.$ref),c=l.uri,p=l.pointer,f=null!==c,o.prev=4,!f){o.next=11;break}return o.next=8,i.resolveDocument(e.source.absoluteRef,c);case 8:o.t0=o.sent,o.next=12;break;case 11:o.t0=e;case 12:d=o.t0,o.next=21;break;case 15:return o.prev=15,o.t1=o.catch(4),h={resolved:!1,isRemote:f,document:void 0,error:o.t1},m=e.source.absoluteRef+"::"+t.$ref,s.set(m,h),o.abrupt("return",h);case 21:v={resolved:!0,document:d,isRemote:f,node:e.parsed,nodePointer:"#/"},y=d.parsed,b=r(p),o.prev=25,b.s();case 27:if((x=b.n()).done){o.next=55;break}if(w=x.value,"object"==typeof y){o.next=34;break}return y=void 0,o.abrupt("break",55);case 34:if(void 0===y[w]){o.next=39;break}y=y[w],v.nodePointer=g.joinPointer(v.nodePointer,g.escapePointer(w)),o.next=53;break;case 39:if(!g.isRef(y)){o.next=51;break}return o.next=42,u(d,y,_(n,y));case 42:if(v=o.sent,d=v.document||d,"object"==typeof v.node){o.next=47;break}return y=void 0,o.abrupt("break",55);case 47:y=v.node[w],v.nodePointer=g.joinPointer(v.nodePointer,g.escapePointer(w)),o.next=53;break;case 51:return y=void 0,o.abrupt("break",55);case 53:o.next=27;break;case 55:o.next=60;break;case 57:o.prev=57,o.t2=o.catch(25),b.e(o.t2);case 60:return o.prev=60,b.f(),o.finish(60);case 63:if(v.node=y,v.document=d,k=e.source.absoluteRef+"::"+t.$ref,!v.document||!g.isRef(y)){o.next=70;break}return o.next=69,u(v.document,y,_(n,y));case 69:v=o.sent;case 70:return s.set(k,v),o.abrupt("return",Object.assign({},v));case 72:case"end":return o.stop()}}),a,null,[[4,15],[25,57,60,63]])})))}!function e(n,r,o){if("object"==typeof n&&null!==n){var i="".concat(r.name,"::").concat(o);if(!l.has(i))if(l.add(i),Array.isArray(n)){var a=r.items;if(r!==A&&void 0===a)return;for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:{},n={},o=0,i=Object.keys(e);o4&&void 0!==arguments[4]?arguments[4]:[];if(!s.includes(t)){s=[].concat(r(s),[t]);for(var l=new Set,c=0,u=Object.values(t.properties);c3&&void 0!==arguments[3]?arguments[3]:0,a=Object.keys(t);if(0===i)a.push("any"),a.push("ref");else{if(r.any)throw new Error("any() is allowed only on top level");if(r.ref)throw new Error("ref() is allowed only on top level")}for(var s=0,l=a;s1&&void 0!==arguments[1]?arguments[1]:C.source.absoluteRef;if(!i.isRef(e))return{location:m,node:e};var n=t+"::"+e.$ref,r=p.get(n);if(!r)return{location:void 0,node:void 0};var o=r.resolved,s=r.node,l=r.document,c=r.nodePointer,u=r.error,f=o?new i.Location(l.source,c):u instanceof a.YamlParseError?new i.Location(u.source,""):void 0;return{location:f,node:s,error:u}}function Ne(e,t,n){var r=n.location?Array.isArray(n.location)?n.location:[n.location]:[Object.assign(Object.assign({},C),{reportOnKey:!1})];f.problems.push(Object.assign(Object.assign({ruleId:e,severity:n.forceSeverity||t},n),{suggest:n.suggest||[],location:r.map((function(e){return Object.assign(Object.assign(Object.assign({},C),{reportOnKey:!1}),e)}))}))}}(t.parsed,n,new i.Location(t.source,"#/"),void 0,"")}},4756:function(e,t,n){"use strict";var r=n(9439);e.exports=r},9439:function(e,t,n){"use strict";var r=n(5143),o=n(9084);function i(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}e.exports.Type=n(889),e.exports.Schema=n(304),e.exports.FAILSAFE_SCHEMA=n(4801),e.exports.JSON_SCHEMA=n(2437),e.exports.CORE_SCHEMA=n(9533),e.exports.DEFAULT_SAFE_SCHEMA=n(7265),e.exports.DEFAULT_FULL_SCHEMA=n(1493),e.exports.load=r.load,e.exports.loadAll=r.loadAll,e.exports.safeLoad=r.safeLoad,e.exports.safeLoadAll=r.safeLoadAll,e.exports.dump=o.dump,e.exports.safeDump=o.safeDump,e.exports.YAMLException=n(2188),e.exports.MINIMAL_SCHEMA=n(4801),e.exports.SAFE_SCHEMA=n(7265),e.exports.DEFAULT_SCHEMA=n(1493),e.exports.scan=i("scan"),e.exports.parse=i("parse"),e.exports.compose=i("compose"),e.exports.addConstructor=i("addConstructor")},910:function(e,t,n){"use strict";function r(e){return null==e}n(7941),n(9653),n(2481),e.exports.isNothing=r,e.exports.isObject=function(e){return"object"==typeof e&&null!==e},e.exports.toArray=function(e){return Array.isArray(e)?e:r(e)?[]:[e]},e.exports.repeat=function(e,t){var n,r="";for(n=0;n>10),56320+(e-65536&1023))}for(var k=new Array(256),E=new Array(256),S=0;S<256;S++)k[S]=x(S)?1:0,E[S]=x(S);function _(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||s,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function O(e,t){return new o(t,new i(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function A(e,t){throw O(e,t)}function R(e,t){e.onWarning&&e.onWarning.call(null,O(e,t))}var C={YAML:function(e,t,n){var r,o,i;null!==e.version&&A(e,"duplication of %YAML directive"),1!==n.length&&A(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&A(e,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),i=parseInt(r[2],10),1!==o&&A(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=i<2,1!==i&&2!==i&&R(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,o;2!==n.length&&A(e,"TAG directive accepts exactly two arguments"),r=n[0],o=n[1],f.test(r)||A(e,"ill-formed tag handle (first argument) of the TAG directive"),l.call(e.tagMap,r)&&A(e,'there is a previously declared suffix for "'+r+'" tag handle'),d.test(o)||A(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[r]=o}};function T(e,t,n,r){var o,i,a,s;if(t1&&(e.result+=r.repeat("\n",t-1))}function D(e,t){var n,r,o=e.tag,i=e.anchor,a=[],s=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),r=e.input.charCodeAt(e.position);0!==r&&45===r&&g(e.input.charCodeAt(e.position+1));)if(s=!0,e.position++,L(e,!0,-1)&&e.lineIndent<=t)a.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,U(e,t,3,!1,!0),a.push(e.result),L(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)A(e,"bad indentation of a sequence entry");else if(e.lineIndentt?x=1:e.lineIndent===t?x=0:e.lineIndentt?x=1:e.lineIndent===t?x=0:e.lineIndentt)&&(U(e,t,4,!0,o)&&(m?d=e.result:h=e.result),m||(I(e,u,p,f,d,h,i,a),f=d=h=null),L(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)A(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===i?A(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?A(e,"repeat of an indentation width identifier"):(p=t+i-1,u=!0)}if(v(a)){do{a=e.input.charCodeAt(++e.position)}while(v(a));if(35===a)do{a=e.input.charCodeAt(++e.position)}while(!m(a)&&0!==a)}for(;0!==a;){for(j(e),e.lineIndent=0,a=e.input.charCodeAt(e.position);(!u||e.lineIndentp&&(p=e.lineIndent),m(a))f++;else{if(e.lineIndent0){for(o=a,i=0;o>0;o--)(a=b(s=e.input.charCodeAt(++e.position)))>=0?i=(i<<4)+a:A(e,"expected hexadecimal character");e.result+=w(i),e.position++}else A(e,"unknown escape sequence");n=r=e.position}else m(s)?(T(e,n,r,!0),M(e,L(e,!1,t)),n=r=e.position):e.position===e.lineStart&&N(e)?A(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}A(e,"unexpected end of the stream within a double quoted scalar")}(e,d)?_=!0:function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!g(r)&&!y(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&A(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),l.call(e.anchorMap,n)||A(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],L(e,!0,-1),!0}(e)?(_=!0,null===e.tag&&null===e.anchor||A(e,"alias node should not have any properties")):function(e,t,n){var r,o,i,a,s,l,c,u,p=e.kind,f=e.result;if(g(u=e.input.charCodeAt(e.position))||y(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(g(r=e.input.charCodeAt(e.position+1))||n&&y(r)))return!1;for(e.kind="scalar",e.result="",o=i=e.position,a=!1;0!==u;){if(58===u){if(g(r=e.input.charCodeAt(e.position+1))||n&&y(r))break}else if(35===u){if(g(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&N(e)||n&&y(u))break;if(m(u)){if(s=e.line,l=e.lineStart,c=e.lineIndent,L(e,!1,-1),e.lineIndent>=t){a=!0,u=e.input.charCodeAt(e.position);continue}e.position=i,e.line=s,e.lineStart=l,e.lineIndent=c;break}}a&&(T(e,o,i,!1),M(e,e.line-s),o=i=e.position,a=!1),v(u)||(i=e.position+1),u=e.input.charCodeAt(++e.position)}return T(e,o,i,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,d,1===n)&&(_=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===x&&(_=c&&D(e,h))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&A(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),u=0,p=e.implicitTypes.length;u tag; it should be "'+f.kind+'", not "'+e.kind+'"'),f.resolve(e.result)?(e.result=f.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):A(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):A(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||_}function B(e){var t,n,r,o,i=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(o=e.input.charCodeAt(e.position))&&(L(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==o));){for(a=!0,o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!g(o);)o=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&A(e,"directive name must not be less than one character in length");0!==o;){for(;v(o);)o=e.input.charCodeAt(++e.position);if(35===o){do{o=e.input.charCodeAt(++e.position)}while(0!==o&&!m(o));break}if(m(o))break;for(t=e.position;0!==o&&!g(o);)o=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==o&&j(e),l.call(C,n)?C[n](e,n,r):R(e,'unknown document directive "'+n+'"')}L(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,L(e,!0,-1)):a&&A(e,"directives end mark is expected"),U(e,e.lineIndent-1,4,!1,!0),L(e,!0,-1),e.checkLineBreaks&&u.test(e.input.slice(i,e.position))&&R(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&N(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,L(e,!0,-1)):e.position0&&-1==="\0\r\nÂ…\u2028\u2029".indexOf(this.buffer.charAt(o-1));)if(o-=1,this.position-o>t/2-1){n=" ... ",o+=5;break}for(i="",a=this.position;at/2-1){i=" ... ",a-=5;break}return s=this.buffer.slice(o,a),r.repeat(" ",e)+n+s+i+"\n"+r.repeat(" ",e+this.position-o+n.length)+"^"},o.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(n+=":\n"+t),n},e.exports=o},304:function(e,t,n){"use strict";n(4747),n(7327);var r=n(910),o=n(2188),i=n(889);function a(e,t,n){var r=[];return e.include.forEach((function(e){n=a(e,t,n)})),e[t].forEach((function(e){n.forEach((function(t,n){t.tag===e.tag&&t.kind===e.kind&&r.push(n)})),n.push(e)})),n.filter((function(e,t){return-1===r.indexOf(t)}))}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach((function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new o("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")})),this.compiledImplicit=a(this,"implicit",[]),this.compiledExplicit=a(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{}};function r(e){n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,o=e.replace(/[\r\n=]/g,""),a=o.length,s=i,l=0,c=[];for(t=0;t>16&255),c.push(l>>8&255),c.push(255&l)),l=l<<6|s.indexOf(o.charAt(t));return 0==(n=a%4*6)?(c.push(l>>16&255),c.push(l>>8&255),c.push(255&l)):18===n?(c.push(l>>10&255),c.push(l>>2&255)):12===n&&c.push(l>>4&255),r?r.from?r.from(c):new r(c):c},predicate:function(e){return r&&r.isBuffer(e)},represent:function(e){var t,n,r="",o=0,a=e.length,s=i;for(t=0;t>18&63],r+=s[o>>12&63],r+=s[o>>6&63],r+=s[63&o]),o=(o<<8)+e[t];return 0==(n=a%3)?(r+=s[o>>18&63],r+=s[o>>12&63],r+=s[o>>6&63],r+=s[63&o]):2===n?(r+=s[o>>10&63],r+=s[o>>4&63],r+=s[o<<2&63],r+=s[64]):1===n&&(r+=s[o>>2&63],r+=s[o<<4&63],r+=s[64],r+=s[64]),r}})},9753:function(e,t,n){"use strict";n(1539);var r=n(889);e.exports=new r("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},293:function(e,t,n){"use strict";n(4603),n(4916),n(9714),n(5306),n(7042),n(9653),n(4747),n(3123),n(1539);var r=n(910),o=n(889),i=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),a=/^[-+]?[0-9]+e/;e.exports=new o("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!i.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n,r,o;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,o=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach((function(e){o.unshift(parseFloat(e,10))})),t=0,r=1,o.forEach((function(e){t+=e*r,r*=60})),n*t):n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||r.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r.isNegativeZero(e))return"-0.0";return n=e.toString(10),a.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},5733:function(e,t,n){"use strict";n(7042),n(4916),n(5306),n(4747),n(3123),n(1539),n(9714);var r=n(910),o=n(889);function i(e){return 48<=e&&e<=55}function a(e){return 48<=e&&e<=57}e.exports=new o("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=e.length,o=0,s=!1;if(!r)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===r)return!0;if("b"===(t=e[++o])){for(o++;o=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},9798:function(e,t,n){"use strict";var r;n(4747),n(8309),n(7042),n(1539),n(9714);try{r=n(7707)}catch(e){"undefined"!=typeof window&&(r=window.esprima)}var o=n(889);e.exports=new o("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(e){if(null===e)return!1;try{var t="("+e+")",n=r.parse(t,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&("ArrowFunctionExpression"===n.body[0].expression.type||"FunctionExpression"===n.body[0].expression.type)}catch(e){return!1}},construct:function(e){var t,n="("+e+")",o=r.parse(n,{range:!0}),i=[];if("Program"!==o.type||1!==o.body.length||"ExpressionStatement"!==o.body[0].type||"ArrowFunctionExpression"!==o.body[0].expression.type&&"FunctionExpression"!==o.body[0].expression.type)throw new Error("Failed to resolve function");return o.body[0].expression.params.forEach((function(e){i.push(e.name)})),t=o.body[0].expression.body.range,"BlockStatement"===o.body[0].expression.body.type?new Function(i,n.slice(t[0]+1,t[1]-1)):new Function(i,"return "+n.slice(t[0],t[1]))},predicate:function(e){return"[object Function]"===Object.prototype.toString.call(e)},represent:function(e){return e.toString()}})},6446:function(e,t,n){"use strict";n(4916),n(7042),n(4603),n(9714),n(1539);var r=n(889);e.exports=new r("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:function(e){if(null===e)return!1;if(0===e.length)return!1;var t=e,n=/\/([gim]*)$/.exec(e),r="";if("/"===t[0]){if(n&&(r=n[1]),r.length>3)return!1;if("/"!==t[t.length-r.length-1])return!1}return!0},construct:function(e){var t=e,n=/\/([gim]*)$/.exec(e),r="";return"/"===t[0]&&(n&&(r=n[1]),t=t.slice(1,t.length-r.length-1)),new RegExp(t,r)},predicate:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},represent:function(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}})},1467:function(e,t,n){"use strict";var r=n(889);e.exports=new r("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:function(){return!0},construct:function(){},predicate:function(e){return void 0===e},represent:function(){return""}})},127:function(e,t,n){"use strict";var r=n(889);e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},321:function(e,t,n){"use strict";var r=n(889);e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})},1608:function(e,t,n){"use strict";var r=n(889);e.exports=new r("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)},construct:function(){return null},predicate:function(e){return null===e},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},8372:function(e,t,n){"use strict";n(1539);var r=n(889),o=Object.prototype.hasOwnProperty,i=Object.prototype.toString;e.exports=new r("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,a,s,l=[],c=e;for(t=0,n=c.length;t1&&console.warn("Replacing with",p),d++}}else{var v=f(u(t,e[n]));if(i.verbose>1&&console.warn((!1===v?m.colour.red:m.colour.green)+"Fragment resolution",e[n],m.colour.normal),!1===v){if(r.parent[r.pkey]={},i.fatal){var g=new Error("Fragment $ref resolution failed "+e[n]);if(!i.promise)throw g;i.promise.reject(g)}}else d++,r.parent[r.pkey]=v,c[e[n]]=r.path.replace("/%24ref","")}else if(l.protocol){var y=s.resolve(o,e[n]).toString();i.verbose>1&&console.warn(m.colour.yellow+"Rewriting external url ref",e[n],"as",y,m.colour.normal),e["x-miro"]=e[n],i.externalRefs[e[n]]&&(i.externalRefs[y]||(i.externalRefs[y]=i.externalRefs[e[n]]),i.externalRefs[y].failed=i.externalRefs[e[n]].failed),e[n]=y}else if(!e["x-miro"]){var b=s.resolve(o,e[n]).toString(),x=!1;i.externalRefs[e[n]]&&(x=i.externalRefs[e[n]].failed),x||(i.verbose>1&&console.warn(m.colour.yellow+"Rewriting external ref",e[n],"as",b,m.colour.normal),e["x-miro"]=e[n],e[n]=b)}}));return p(e,{},(function(e,t,n){h(e,t)&&void 0!==e.$fixed&&delete e.$fixed})),i.verbose>1&&console.warn("Finished fragment resolution"),e}function g(e,t){if(!t.filters||!t.filters.length)return e;var n,o=r(t.filters);try{for(o.s();!(n=o.n()).done;)e=(0,n.value)(e,t)}catch(e){o.e(e)}finally{o.f()}return e}function y(e){return new Promise((function(t,n){(function(e){return new Promise((function(t,n){function r(t,n,r){if(t[n]&&h(t[n],"$ref")){var i=t[n].$ref;if(!i.startsWith("#")){var a="";if(!o[i]){var s=Object.keys(o).find((function(e,t,n){return i.startsWith(e+"/")}));s&&(e.verbose&&console.warn("Found potential subschema at",s),a=(a="/"+(i.split("#")[1]||"").replace(s.split("#")[1]||"")).split("/undefined").join(""),i=s)}if(o[i]||(o[i]={resolved:!1,paths:[],extras:{},description:t[n].description}),o[i].resolved)if(o[i].failed);else if(e.rewriteRefs){var l=o[i].resolvedAt;e.verbose>1&&console.warn("Rewriting ref",i,l),t[n]["x-miro"]=i,t[n].$ref=l+a}else t[n]=f(o[i].data);else o[i].paths.push(r.path),o[i].extras[r.path]=a}}}var o=e.externalRefs;if(e.resolver.depth>0&&e.source===e.resolver.base)return t(o);p(e.openapi.definitions,{identityDetection:!0,path:"#/definitions"},r),p(e.openapi.components,{identityDetection:!0,path:"#/components"},r),p(e.openapi,{identityDetection:!0},r),t(o)}))})(e).then((function(t){var n=function(n){if(!t[n].resolved){var l=e.resolver.depth;l>0&&l++,e.resolver.actions[l].push((function(){return function(e,t,n,r){var o=s.parse(n.source),l=n.source.split("\\").join("/").split("/");l.pop()||l.pop();var p="",d=t.split("#");d.length>1&&(p="#"+d[1],t=d[0]),l=l.join("/");var h,m,y,b=(h=s.parse(t).protocol,m=o.protocol,h&&h.length>2?h:m&&m.length>2?m:"file:");if(y="file:"===b?a.resolve(l?l+"/":"",t):s.resolve(l?l+"/":"",t),n.cache[y]){n.verbose&&console.warn("CACHED",y,p);var x=f(n.cache[y]),w=n.externalRef=x;if(p&&!1===(w=u(w,p))&&(w={},n.fatal)){var k=new Error("Cached $ref resolution failed "+y+p);if(!n.promise)throw k;n.promise.reject(k)}return w=g(w=v(w,x,t,p,y,n),n),r(f(w),y,n),Promise.resolve(w)}if(n.verbose&&console.warn("GET",y,p),n.handlers&&n.handlers[b])return n.handlers[b](l,t,p,n).then((function(e){return n.externalRef=e,e=g(e,n),n.cache[y]=e,r(e,y,n),e})).catch((function(e){throw n.verbose&&console.warn(e),e}));if(b&&b.startsWith("http")){var E=Object.assign({},n.fetchOptions,{agent:n.agent});return n.fetch(y,E).then((function(e){if(200!==e.status){if(n.ignoreIOErrors)return n.verbose&&console.warn("FAILED",t),n.externalRefs[t].failed=!0,'{"$ref":"'+t+'"}';throw new Error("Received status code ".concat(e.status,": ").concat(y))}return e.text()})).then((function(e){try{var o=c.parse(e,{schema:"core",prettyErrors:!0});if(e=n.externalRef=o,n.cache[y]=f(e),p&&!1===(e=u(e,p))&&(e={},n.fatal)){var i=new Error("Remote $ref resolution failed "+y+p);if(!n.promise)throw i;n.promise.reject(i)}e=g(e=v(e,o,t,p,y,n),n)}catch(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}return r(e,y,n),e})).catch((function(e){if(n.verbose&&console.warn(e),n.cache[y]={},!n.promise||!n.fatal)throw e;n.promise.reject(e)}))}var S='{"$ref":"'+t+'"}';return function(e,t,n,r,o){return new Promise((function(a,s){i.readFile(e,t,(function(e,t){e?n.ignoreIOErrors&&o?(n.verbose&&console.warn("FAILED",r),n.externalRefs[r].failed=!0,a(o)):s(e):a(t)}))}))}(y,n.encoding||"utf8",n,t,S).then((function(e){try{var o=c.parse(e,{schema:"core",prettyErrors:!0});if(e=n.externalRef=o,n.cache[y]=f(e),p&&!1===(e=u(e,p))&&(e={},n.fatal)){var i=new Error("File $ref resolution failed "+y+p);if(!n.promise)throw i;n.promise.reject(i)}e=g(e=v(e,o,t,p,y,n),n)}catch(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}return r(e,y,n),e})).catch((function(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}))}(e.openapi,n,e,(function(e,i,a){if(!t[n].resolved){var s={};s.context=t[n],s.$ref=n,s.original=f(e),s.updated=e,s.source=i,a.externals.push(s),t[n].resolved=!0}var l=Object.assign({},a,{source:"",resolver:{actions:a.resolver.actions,depth:a.resolver.actions.length-1,base:a.resolver.base}});a.patch&&t[n].description&&!e.description&&"object"==typeof e&&(e.description=t[n].description),t[n].data=e;var c,p=(c=t[n].paths,o(new Set(c)));p=p.sort((function(e,t){var n=e.startsWith("#/components/")||e.startsWith("#/definitions/"),r=t.startsWith("#/components/")||t.startsWith("#/definitions/");return n&&!r?-1:r&&!n?1:0}));var d,h=r(p);try{for(h.s();!(d=h.n()).done;){var m=d.value;if(t[n].resolvedAt&&m!==t[n].resolvedAt&&m.indexOf("x-ms-examples/")<0)a.verbose>1&&console.warn("Creating pointer to data at",m),u(a.openapi,m,{$ref:t[n].resolvedAt+t[n].extras[m],"x-miro":n+t[n].extras[m]});else{t[n].resolvedAt?a.verbose>1&&console.warn("Avoiding circular reference"):(t[n].resolvedAt=m,a.verbose>1&&console.warn("Creating initial clone of data at",m));var v=f(e);u(a.openapi,m,v)}}}catch(e){h.e(e)}finally{h.f()}0===a.resolver.actions[l.resolver.depth].length&&a.resolver.actions[l.resolver.depth].push((function(){return y(l)}))}))}))}};for(var l in t)n(l)})).catch((function(t){e.verbose&&console.warn(t),n(t)}));var l={options:e};l.actions=e.resolver.actions[e.resolver.depth],t(l)}))}function b(e,t,n){e.resolver.actions.push([]),y(e).then((function(r){var o;(o=r.actions,o.reduce((function(e,t){return e.then((function(e){return t().then(Array.prototype.concat.bind(e))}))}),Promise.resolve([]))).then((function(){if(e.resolver.depth>=e.resolver.actions.length)return console.warn("Ran off the end of resolver actions"),t(!0);e.resolver.depth++,e.resolver.actions[e.resolver.depth].length?setTimeout((function(){b(r.options,t,n)}),0):(e.verbose>1&&console.warn(m.colour.yellow+"Finished external resolution!",m.colour.normal),e.resolveInternal&&(e.verbose>1&&console.warn(m.colour.yellow+"Starting internal resolution!",m.colour.normal),e.openapi=d(e.openapi,e.original,{verbose:e.verbose-1}),e.verbose>1&&console.warn(m.colour.yellow+"Finished internal resolution!",m.colour.normal)),p(e.openapi,{},(function(t,n,r){h(t,n)&&(e.preserveMiro||delete t["x-miro"])})),t(e))})).catch((function(t){e.verbose&&console.warn(t),n(t)}))})).catch((function(t){e.verbose&&console.warn(t),n(t)}))}function x(e){if(e.cache||(e.cache={}),e.fetch||(e.fetch=l),e.source){var t=s.parse(e.source);(!t.protocol||t.protocol.length<=2)&&(e.source=a.resolve(e.source))}e.externals=[],e.externalRefs={},e.rewriteRefs=!0,e.resolver={},e.resolver.depth=0,e.resolver.base=e.source,e.resolver.actions=[[]]}e.exports={optionalResolve:function(e){return x(e),new Promise((function(t,n){e.resolve?b(e,t,n):t(e)}))},resolve:function(e,t,n){return n||(n={}),n.openapi=e,n.source=t,n.resolve=!0,x(n),new Promise((function(e,t){b(n,e,t)}))}}},6704:function(e,t,n){"use strict";function r(){return{depth:0,seen:new WeakMap,top:!0,combine:!1,allowRefSiblings:!1}}n(6992),n(1539),n(8783),n(4129),n(3948),n(2526),n(1817),n(9601),e.exports={getDefaultState:r,walkSchema:function e(t,n,o,i){if(void 0===o.depth&&(o=r()),null==t)return t;if(void 0!==t.$ref){var a={$ref:t.$ref};return o.allowRefSiblings&&t.description&&(a.description=t.description),i(a,n,o),a}if(o.combine&&(t.allOf&&Array.isArray(t.allOf)&&1===t.allOf.length&&delete(t=Object.assign({},t.allOf[0],t)).allOf,t.anyOf&&Array.isArray(t.anyOf)&&1===t.anyOf.length&&delete(t=Object.assign({},t.anyOf[0],t)).anyOf,t.oneOf&&Array.isArray(t.oneOf)&&1===t.oneOf.length&&delete(t=Object.assign({},t.oneOf[0],t)).oneOf),i(t,n,o),o.seen.has(t))return t;if("object"==typeof t&&null!==t&&o.seen.set(t,!0),o.top=!1,o.depth++,void 0!==t.items&&(o.property="items",e(t.items,t,o,i)),t.additionalItems&&"object"==typeof t.additionalItems&&(o.property="additionalItems",e(t.additionalItems,t,o,i)),t.additionalProperties&&"object"==typeof t.additionalProperties&&(o.property="additionalProperties",e(t.additionalProperties,t,o,i)),t.properties)for(var s in t.properties){var l=t.properties[s];o.property="properties/"+s,e(l,t,o,i)}if(t.patternProperties)for(var c in t.patternProperties){var u=t.patternProperties[c];o.property="patternProperties/"+c,e(u,t,o,i)}if(t.allOf)for(var p in t.allOf){var f=t.allOf[p];o.property="allOf/"+p,e(f,t,o,i)}if(t.anyOf)for(var d in t.anyOf){var h=t.anyOf[d];o.property="anyOf/"+d,e(h,t,o,i)}if(t.oneOf)for(var m in t.oneOf){var v=t.oneOf[m];o.property="oneOf/"+m,e(v,t,o,i)}return t.not&&(o.property="not",e(t.not,t,o,i)),o.depth--,t}}},4188:function(e,t,n){"use strict";var r=n(9713).default,o=n(319).default;n(9601),n(6992),n(1539),n(8783),n(4129),n(3948),n(489),n(2222),n(1249),n(7941),e.exports={nop:function(e){return e},clone:function(e){return JSON.parse(JSON.stringify(e))},shallowClone:function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},deepClone:function e(t){var n=Array.isArray(t)?[]:{};for(var r in t)(t.hasOwnProperty(r)||Array.isArray(t))&&(n[r]="object"==typeof t[r]?e(t[r]):t[r]);return n},fastClone:function(e){return Object.assign({},e)},circularClone:function e(t,n){if(n||(n=new WeakMap),Object(t)!==t||t instanceof Function)return t;if(n.has(t))return n.get(t);try{var i=new t.constructor}catch(e){i=Object.create(Object.getPrototypeOf(t))}return n.set(t,i),Object.assign.apply(Object,[i].concat(o(Object.keys(t).map((function(o){return r({},o,e(t[o],n))})))))}}},3094:function(e,t,n){"use strict";n(7042),n(4916),n(3123);var r=n(9290).recurse,o=n(4188).shallowClone,i=n(2580).jptr,a=n(3856).isRef;e.exports={dereference:function e(t,n,s){s||(s={}),s.cache||(s.cache={}),s.state||(s.state={}),s.state.identityDetection=!0,s.depth=s.depth?s.depth+1:1;var l=s.depth>1?t:o(t),c={data:l},u=s.depth>1?n:o(n);s.master||(s.master=l);for(var p=function(e){return e&&e.verbose?{warn:function(){var e=Array.prototype.slice.call(arguments);console.warn.apply(console,e)}}:{warn:function(){}}}(s),f=1;f>0;)f=0,r(c,s.state,(function(t,n,r){if(a(t,n)){var o=t[n];if(f++,s.cache[o]){var l=s.cache[o];if(l.resolved)p.warn("Patching %s for %s",o,l.path),r.parent[r.pkey]=l.data,s.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[r.pkey][s.$ref]=o);else{if(o===l.path)throw new Error("Tight circle at ".concat(l.path));p.warn("Unresolved ref"),r.parent[r.pkey]=i(l.source,l.path),!1===r.parent[r.pkey]&&(r.parent[r.pkey]=i(l.source,l.key)),s.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[s.$ref]=o)}}else{var c={};c.path=r.path.split("/$ref")[0],c.key=o,p.warn("Dereffing %s at %s",o,c.path),c.source=u,c.data=i(c.source,c.key),!1===c.data&&(c.data=i(s.master,c.key),c.source=s.master),!1===c.data&&p.warn("Missing $ref target",c.key),s.cache[o]=c,c.data=r.parent[r.pkey]=e(i(c.source,c.key),c.source,s),s.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[r.pkey][s.$ref]=o),c.resolved=!0}}}));return c.data}}},3856:function(e){"use strict";e.exports={isRef:function(e,t){return"$ref"===t&&!!e&&"string"==typeof e[t]}}},2580:function(e,t,n){"use strict";function r(e){return e.replace(/\~1/g,"/").replace(/~0/g,"~")}n(4916),n(5306),n(3123),n(9600),n(7042),n(6755),n(1539),n(9714),e.exports={jptr:function(e,t,n){if(void 0===e)return!1;if(!t||"string"!=typeof t||"#"===t)return void 0!==n?n:e;if(t.indexOf("#")>=0){var o=t.split("#");if(o[0])return!1;t=o[1],t=decodeURIComponent(t.slice(1).split("+").join(" "))}t.startsWith("/")&&(t=t.slice(1));for(var i=t.split("/"),a=0;a0?i[a-1]:"",-1!=l||e&&e.hasOwnProperty(i[a]))if(l>=0)s&&(e[l]=n),e=e[l];else{if(-2===l)return s?(Array.isArray(e)&&e.push(n),n):void 0;s&&(e[i[a]]=n),e=e[i[a]]}else{if(void 0===n||"object"!=typeof e||Array.isArray(e))return!1;e[i[a]]=s?n:"0"===i[a+1]||"-"===i[a+1]?[]:{},e=e[i[a]]}}return e},jpescape:function(e){return e.replace(/\~/g,"~0").replace(/\//g,"~1")},jpunescape:r}},9290:function(e,t,n){"use strict";n(6992),n(1539),n(8783),n(4129),n(3948),n(9601);var r=n(2580).jpescape;e.exports={recurse:function e(t,n,o){if(n||(n={depth:0}),n.depth||(n=Object.assign({},{path:"#",depth:0,pkey:"",parent:{},payload:{},seen:new WeakMap,identity:!1,identityDetection:!1},n)),"object"==typeof t){var i=n.path;for(var a in t){if(n.key=a,n.path=n.path+"/"+encodeURIComponent(r(a)),n.identityPath=n.seen.get(t[a]),n.identity=void 0!==n.identityPath,t.hasOwnProperty(a)&&o(t,a,n),"object"==typeof t[a]&&!n.identity){n.identityDetection&&!Array.isArray(t[a])&&null!==t[a]&&n.seen.set(t[a],n.path);var s={};s.parent=t,s.path=n.path,s.depth=n.depth?n.depth+1:1,s.pkey=a,s.payload=n.payload,s.seen=n.seen,s.identity=!1,s.identityDetection=n.identityDetection,e(t[a],s,o)}n.path=i}}}}},6399:function(e,t,n){"use strict";var r=n(3269).default,o=n(4575).default,i=n(2205).default,a=n(9842).default,s=n(5957).default;n(8309),n(7941),n(2222),n(6755),n(4916),n(5306),n(3123),n(9600),n(3210),n(7327),n(2526),n(1817),n(9601),n(9826),n(1539),n(9714),n(6992),n(8783),n(3948),n(285),n(8478),n(8674),n(4723),n(4747);var l,c=n(1683),u=n(8575),p=(n(6470),n(4480)),f=n(7707),d=n(7707),h=n(2580),m=h.jptr,v=n(3856).isRef,g=n(4188).clone,y=n(4188).circularClone,b=n(9290).recurse,x=n(1338),w=n(6704),k=n(8276),E=n(873).statusCodes,S=n(8500).i8,_="3.0.0",O=function(e){i(n,e);var t=a(n);function n(e){var r;return o(this,n),(r=t.call(this,e)).name="S2OError",r}return n}(s(Error));function A(e,t){var n=new O(e);if(n.options=t,!t.promise)throw n;t.promise.reject(n)}function R(e,t,n){n.warnOnly?t[n.warnProperty||"x-s2o-warning"]=e:A(e,n)}function C(e,t){w.walkSchema(e,{},{},(function(e,n,o){!function(e,t){if(e["x-required"]&&Array.isArray(e["x-required"])&&(e.required||(e.required=[]),e.required=e.required.concat(e["x-required"]),delete e["x-required"]),e["x-anyOf"]&&(e.anyOf=e["x-anyOf"],delete e["x-anyOf"]),e["x-oneOf"]&&(e.oneOf=e["x-oneOf"],delete e["x-oneOf"]),e["x-not"]&&(e.not=e["x-not"],delete e["x-not"]),"boolean"==typeof e["x-nullable"]&&(e.nullable=e["x-nullable"],delete e["x-nullable"]),"object"==typeof e["x-discriminator"]&&"string"==typeof e["x-discriminator"].propertyName)for(var n in e.discriminator=e["x-discriminator"],delete e["x-discriminator"],e.discriminator.mapping){var r=e.discriminator.mapping[n];r.startsWith("#/definitions/")&&(e.discriminator.mapping[n]=r.replace("#/definitions/","#/components/schemas/"))}}(e),function(e,t,n){if(e.nullable&&n.patches++,e.discriminator&&"string"==typeof e.discriminator&&(e.discriminator={propertyName:e.discriminator}),e.items&&Array.isArray(e.items)&&(0===e.items.length?e.items={}:1===e.items.length?e.items=e.items[0]:e.items={anyOf:e.items}),e.type&&Array.isArray(e.type))if(n.patch){if(n.patches++,0===e.type.length)delete e.type;else{e.oneOf||(e.oneOf=[]);var o,i=r(e.type);try{for(i.s();!(o=i.n()).done;){var a=o.value,s={};if("null"===a)e.nullable=!0;else{s.type=a;var l,c=r(k.arrayProperties);try{for(c.s();!(l=c.n()).done;){var u=l.value;void 0!==e.prop&&(s[u]=e[u],delete e[u])}}catch(e){c.e(e)}finally{c.f()}}s.type&&e.oneOf.push(s)}}catch(e){i.e(e)}finally{i.f()}delete e.type,0===e.oneOf.length?delete e.oneOf:e.oneOf.length<2&&(e.type=e.oneOf[0].type,Object.keys(e.oneOf[0]).length>1&&R("Lost properties from oneOf",e,n),delete e.oneOf)}e.type&&Array.isArray(e.type)&&1===e.type.length&&(e.type=e.type[0])}else A("(Patchable) schema type must not be an array",n);e.type&&"null"===e.type&&(delete e.type,e.nullable=!0),"array"!==e.type||e.items||(e.items={}),"file"===e.type&&(e.type="string",e.format="binary"),"boolean"==typeof e.required&&(e.required&&e.name&&(void 0===t.required&&(t.required=[]),Array.isArray(t.required)&&t.required.push(e.name)),delete e.required),e.xml&&"string"==typeof e.xml.namespace&&(e.xml.namespace||delete e.xml.namespace),void 0!==e.allowEmptyValue&&(n.patches++,delete e.allowEmptyValue)}(e,n,t)}))}function T(e,t,n){var r=n.payload.options;if(v(e,t)){if(e[t].startsWith("#/components/"));else if("#/consumes"===e[t])delete e[t],n.parent[n.pkey]=g(r.openapi.consumes);else if("#/produces"===e[t])delete e[t],n.parent[n.pkey]=g(r.openapi.produces);else if(e[t].startsWith("#/definitions/")){var o=e[t].replace("#/definitions/","").split("/"),i=h.jpunescape(o[0]),a=l.schemas[decodeURIComponent(i)];a?o[0]=a:R("Could not resolve reference "+e[t],e,r),e[t]="#/components/schemas/"+o.join("/")}else if(e[t].startsWith("#/parameters/"))e[t]="#/components/parameters/"+k.sanitise(e[t].replace("#/parameters/",""));else if(e[t].startsWith("#/responses/"))e[t]="#/components/responses/"+k.sanitise(e[t].replace("#/responses/",""));else if(e[t].startsWith("#")){var s=g(h.jptr(r.openapi,e[t]));if(!1===s)R("direct $ref not found "+e[t],e,r);else if(r.refmap[e[t]])e[t]=r.refmap[e[t]];else{var c=e[t],u="schemas",p=(c=(c=(c=(c=c.replace("/properties/headers/","")).replace("/properties/responses/","")).replace("/properties/parameters/","")).replace("/properties/schemas/","")).lastIndexOf("/schema");if("schemas"==(u=c.indexOf("/headers/")>p?"headers":c.indexOf("/responses/")>p?"responses":c.indexOf("/example")>p?"examples":c.indexOf("/x-")>p?"extensions":c.indexOf("/parameters/")>p?"parameters":"schemas")&&C(s,r),"responses"!==u&&"extensions"!==u){var f=u.substr(0,u.length-1);"parameter"===f&&s.name&&s.name===k.sanitise(s.name)&&(f=encodeURIComponent(s.name));var d=1;for(e["x-miro"]&&(f=function(e){return e=e.indexOf("#")>=0?e.split("#")[1].split("/").pop():e.split("/").pop().split(".")[0],encodeURIComponent(k.sanitise(e))}(e["x-miro"]),d="");h.jptr(r.openapi,"#/components/"+u+"/"+f+d);)d=""===d?2:++d;var m="#/components/"+u+"/"+f+d,y="";"examples"===u&&(s={value:s},y="/value"),h.jptr(r.openapi,m,s),r.refmap[e[t]]=m+y,e[t]=m+y}}}if(delete e["x-miro"],Object.keys(e).length>1){var b=e[t],x=n.path.indexOf("/schema")>=0;"preserve"===r.refSiblings||(x&&"allOf"===r.refSiblings?(delete e.$ref,n.parent[n.pkey]={allOf:[{$ref:b},e]}):n.parent[n.pkey]={$ref:b})}}if("x-ms-odata"===t&&"string"==typeof e[t]&&e[t].startsWith("#/")){var w=e[t].replace("#/definitions/","").replace("#/components/schemas/","").split("/"),E=l.schemas[decodeURIComponent(w[0])];E?w[0]=E:R("Could not resolve reference "+e[t],e,r),e[t]="#/components/schemas/"+w.join("/")}}function P(e){for(var t in e)for(var n in e[t]){var r=k.sanitise(n);n!==r&&(e[t][r]=e[t][n],delete e[t][n])}}function I(e,t){if("basic"===e.type&&(e.type="http",e.scheme="basic"),"oauth2"===e.type){var n={},r=e.flow;"application"===e.flow&&(r="clientCredentials"),"accessCode"===e.flow&&(r="authorizationCode"),void 0!==e.authorizationUrl&&(n.authorizationUrl=e.authorizationUrl.split("?")[0].trim()||"/"),"string"==typeof e.tokenUrl&&(n.tokenUrl=e.tokenUrl.split("?")[0].trim()||"/"),n.scopes=e.scopes||{},e.flows={},e.flows[r]=n,delete e.flow,delete e.authorizationUrl,delete e.tokenUrl,delete e.scopes,void 0!==e.name&&(t.patch?(t.patches++,delete e.name):A("(Patchable) oauth2 securitySchemes should not have name property",t))}}function j(e){return e&&!e["x-s2o-delete"]}function L(e,t){if(e.$ref)e.$ref=e.$ref.replace("#/responses/","#/components/responses/");else{e.type&&!e.schema&&(e.schema={}),e.type&&(e.schema.type=e.type),e.items&&"array"!==e.items.type&&(e.items.collectionFormat!==e.collectionFormat&&R("Nested collectionFormats are not supported",e,t),delete e.items.collectionFormat),"array"===e.type?("ssv"===e.collectionFormat?R("collectionFormat:ssv is no longer supported for headers",e,t):"pipes"===e.collectionFormat?R("collectionFormat:pipes is no longer supported for headers",e,t):"multi"===e.collectionFormat?e.explode=!0:"tsv"===e.collectionFormat?(R("collectionFormat:tsv is no longer supported",e,t),e["x-collectionFormat"]="tsv"):e.style="simple",delete e.collectionFormat):e.collectionFormat&&(t.patch?(t.patches++,delete e.collectionFormat):A("(Patchable) collectionFormat is only applicable to header.type array",t)),delete e.type;var n,o=r(k.parameterTypeProperties);try{for(o.s();!(n=o.n()).done;){var i=n.value;void 0!==e[i]&&(e.schema[i]=e[i],delete e[i])}}catch(e){o.e(e)}finally{o.f()}var a,s=r(k.arrayProperties);try{for(s.s();!(a=s.n()).done;){var l=a.value;void 0!==e[l]&&(e.schema[l]=e[l],delete e[l])}}catch(e){s.e(e)}finally{s.f()}}}function N(e,t){if(e.$ref.indexOf("#/parameters/")>=0){var n=e.$ref.split("#/parameters/");e.$ref=n[0]+"#/components/parameters/"+k.sanitise(n[1])}e.$ref.indexOf("#/definitions/")>=0&&R("Definition used as parameter",e,t)}function M(e,t,n,o,i,a,s){var l,c={},u=!0;if(t&&t.consumes&&"string"==typeof t.consumes){if(!s.patch)return A("(Patchable) operation.consumes must be an array",s);s.patches++,t.consumes=[t.consumes]}Array.isArray(a.consumes)||delete a.consumes;var p=((t?t.consumes:null)||a.consumes||[]).filter(k.uniqueOnly);if(e&&e.$ref&&"string"==typeof e.$ref){N(e,s);var f=decodeURIComponent(e.$ref.replace("#/components/parameters/","")),d=!1,h=a.components.parameters[f];if(h&&!h["x-s2o-delete"]||!e.$ref.startsWith("#/")||(e["x-s2o-delete"]=!0,d=!0),d){var v=e.$ref,y=m(a,e.$ref);!y&&v.startsWith("#/")?R("Could not resolve reference "+v,e,s):y&&(e=y)}}if(e&&(e.name||e.in)){"boolean"==typeof e["x-deprecated"]&&(e.deprecated=e["x-deprecated"],delete e["x-deprecated"]),void 0!==e["x-example"]&&(e.example=e["x-example"],delete e["x-example"]),"body"===e.in||e.type||(s.patch?(s.patches++,e.type="string"):A("(Patchable) parameter.type is mandatory for non-body parameters",s)),e.type&&"object"==typeof e.type&&e.type.$ref&&(e.type=m(a,e.type.$ref)),"file"===e.type&&(e["x-s2o-originalType"]=e.type,l=e.type),e.description&&"object"==typeof e.description&&e.description.$ref&&(e.description=m(a,e.description.$ref)),null===e.description&&delete e.description;var x=e.collectionFormat;if("array"!==e.type||x||(x="csv"),x&&("array"!==e.type&&(s.patch?(s.patches++,delete e.collectionFormat):A("(Patchable) collectionFormat is only applicable to param.type array",s)),"csv"!==x||"query"!==e.in&&"cookie"!==e.in||(e.style="form",e.explode=!1),"csv"!==x||"path"!==e.in&&"header"!==e.in||(e.style="simple"),"ssv"===x&&("query"===e.in?e.style="spaceDelimited":R("collectionFormat:ssv is no longer supported except for in:query parameters",e,s)),"pipes"===x&&("query"===e.in?e.style="pipeDelimited":R("collectionFormat:pipes is no longer supported except for in:query parameters",e,s)),"multi"===x&&(e.explode=!0),"tsv"===x&&(R("collectionFormat:tsv is no longer supported",e,s),e["x-collectionFormat"]="tsv"),delete e.collectionFormat),e.type&&"body"!==e.type&&"formData"!==e.in)if(e.items&&e.schema)R("parameter has array,items and schema",e,s);else{e.schema&&s.patches++,e.schema&&"object"==typeof e.schema||(e.schema={}),e.schema.type=e.type,e.items&&(e.schema.items=e.items,delete e.items,b(e.schema.items,null,(function(t,n,r){"collectionFormat"===n&&"string"==typeof t[n]&&(x&&t[n]!==x&&R("Nested collectionFormats are not supported",e,s),delete t[n])})));var w,E=r(k.parameterTypeProperties);try{for(E.s();!(w=E.n()).done;){var S=w.value;void 0!==e[S]&&(e.schema[S]=e[S]),delete e[S]}}catch(e){E.e(e)}finally{E.f()}}e.schema&&C(e.schema,s),e["x-ms-skip-url-encoding"]&&"query"===e.in&&(e.allowReserved=!0,delete e["x-ms-skip-url-encoding"])}if(e&&"formData"===e.in){u=!1,c.content={};var _="application/x-www-form-urlencoded";if(p.length&&p.indexOf("multipart/form-data")>=0&&(_="multipart/form-data"),c.content[_]={},e.schema)c.content[_].schema=e.schema,e.schema.$ref&&(c["x-s2o-name"]=decodeURIComponent(e.schema.$ref.replace("#/components/schemas/","")));else{c.content[_].schema={},c.content[_].schema.type="object",c.content[_].schema.properties={},c.content[_].schema.properties[e.name]={};var O=c.content[_].schema,T=c.content[_].schema.properties[e.name];e.description&&(T.description=e.description),e.example&&(T.example=e.example),e.type&&(T.type=e.type);var P,I=r(k.parameterTypeProperties);try{for(I.s();!(P=I.n()).done;){var j=P.value;void 0!==e[j]&&(T[j]=e[j])}}catch(e){I.e(e)}finally{I.f()}!0===e.required&&(O.required||(O.required=[]),O.required.push(e.name),c.required=!0),void 0!==e.default&&(T.default=e.default),T.properties&&(T.properties=e.properties),e.allOf&&(T.allOf=e.allOf),"array"===e.type&&e.items&&(T.items=e.items,T.items.collectionFormat&&delete T.items.collectionFormat),"file"!==l&&"file"!==e["x-s2o-originalType"]||(T.type="string",T.format="binary"),D(e,T)}}else e&&"file"===e.type&&(e.required&&(c.required=e.required),c.content={},c.content["application/octet-stream"]={},c.content["application/octet-stream"].schema={},c.content["application/octet-stream"].schema.type="string",c.content["application/octet-stream"].schema.format="binary",D(e,c));if(e&&"body"===e.in){c.content={},e.name&&(c["x-s2o-name"]=(t&&t.operationId?k.sanitiseAll(t.operationId):"")+("_"+e.name).toCamelCase()),e.description&&(c.description=e.description),e.required&&(c.required=e.required),t&&s.rbname&&e.name&&(t[s.rbname]=e.name),e.schema&&e.schema.$ref?c["x-s2o-name"]=decodeURIComponent(e.schema.$ref.replace("#/components/schemas/","")):e.schema&&"array"===e.schema.type&&e.schema.items&&e.schema.items.$ref&&(c["x-s2o-name"]=decodeURIComponent(e.schema.items.$ref.replace("#/components/schemas/",""))+"Array"),p.length||p.push("application/json");var L,M=r(p);try{for(M.s();!(L=M.n()).done;){var F=L.value;c.content[F]={},c.content[F].schema=g(e.schema||{}),C(c.content[F].schema,s)}}catch(e){M.e(e)}finally{M.f()}D(e,c)}if(Object.keys(c).length>0&&(e["x-s2o-delete"]=!0,t&&(t.requestBody&&u?(t.requestBody["x-s2o-overloaded"]=!0,R("Operation "+(t.operationId||i)+" has multiple requestBodies",t,s)):(t.requestBody||(t=n[o]=function(e,t){for(var n={},r=0,o=Object.keys(e);r=0?R("definition used as response: "+e.$ref,e,i):e.$ref.startsWith("#/responses/")&&(e.$ref="#/components/responses/"+k.sanitise(decodeURIComponent(e.$ref.replace("#/responses/",""))));else{if((void 0===e.description||null===e.description||""===e.description&&i.patch)&&(i.patch?"object"!=typeof e||Array.isArray(e)||(i.patches++,e.description=E[e]||""):A("(Patchable) response.description is mandatory",i)),void 0!==e.schema){if(C(e.schema,i),e.schema.$ref&&"string"==typeof e.schema.$ref&&e.schema.$ref.startsWith("#/responses/")&&(e.schema.$ref="#/components/responses/"+k.sanitise(decodeURIComponent(e.schema.$ref.replace("#/responses/","")))),n&&n.produces&&"string"==typeof n.produces){if(!i.patch)return A("(Patchable) operation.produces must be an array",i);i.patches++,n.produces=[n.produces]}o.produces&&!Array.isArray(o.produces)&&delete o.produces;var a=((n?n.produces:null)||o.produces||[]).filter(k.uniqueOnly);a.length||a.push("*/*"),e.content={};var s,l=r(a);try{for(l.s();!(s=l.n()).done;){var c=s.value;if(e.content[c]={},e.content[c].schema=g(e.schema),e.examples&&e.examples[c]){var u={};u.value=e.examples[c],e.content[c].examples={},e.content[c].examples.response=u,delete e.examples[c]}"file"===e.content[c].schema.type&&(e.content[c].schema={type:"string",format:"binary"})}}catch(e){l.e(e)}finally{l.f()}delete e.schema}for(var p in e.examples)e.content||(e.content={}),e.content[p]||(e.content[p]={}),e.content[p].examples={},e.content[p].examples.response={},e.content[p].examples.response.value=e.examples[p];if(delete e.examples,e.headers)for(var f in e.headers)"status code"===f.toLowerCase()?i.patch?(i.patches++,delete e.headers[f]):A('(Patchable) "Status Code" is not a valid header',i):L(e.headers[f],i)}}function z(e,t,n,o,i){for(var a in e){var s=e[a];for(var l in s&&s["x-trace"]&&"object"==typeof s["x-trace"]&&(s.trace=s["x-trace"],delete s["x-trace"]),s&&s["x-summary"]&&"string"==typeof s["x-summary"]&&(s.summary=s["x-summary"],delete s["x-summary"]),s&&s["x-description"]&&"string"==typeof s["x-description"]&&(s.description=s["x-description"],delete s["x-description"]),s&&s["x-servers"]&&Array.isArray(s["x-servers"])&&(s.servers=s["x-servers"],delete s["x-servers"]),s)if(k.httpMethods.indexOf(l)>=0||"x-amazon-apigateway-any-method"===l){var c=s[l];if(c&&c.parameters&&Array.isArray(c.parameters)){if(s.parameters){var p,f=r(s.parameters);try{var d=function(){var e=p.value;"string"==typeof e.$ref&&(N(e,n),e=m(i,e.$ref)),c.parameters.find((function(t,n,r){return t.name===e.name&&t.in===e.in}))||"formData"!==e.in&&"body"!==e.in&&"file"!==e.type||(c=M(e,c,s,l,a,i,n),n.rbname&&""===c[n.rbname]&&delete c[n.rbname])};for(f.s();!(p=f.n()).done;)d()}catch(e){f.e(e)}finally{f.f()}}var v,y=r(c.parameters);try{for(y.s();!(v=y.n()).done;){var b=v.value;c=M(b,c,s,l,l+":"+a,i,n)}}catch(e){y.e(e)}finally{y.f()}n.rbname&&""===c[n.rbname]&&delete c[n.rbname],n.debug||c.parameters&&(c.parameters=c.parameters.filter(j))}if(c&&c.security&&P(c.security),"object"==typeof c){if(!c.responses){c.responses={default:{description:"Default response"}}}for(var x in c.responses)F(c.responses[x],0,c,i,n)}if(c&&c["x-servers"]&&Array.isArray(c["x-servers"]))c.servers=c["x-servers"],delete c["x-servers"];else if(c&&c.schemes&&c.schemes.length){var w,E=r(c.schemes);try{for(E.s();!(w=E.n()).done;){var S=w.value;if((!i.schemes||i.schemes.indexOf(S)<0)&&(c.servers||(c.servers=[]),Array.isArray(i.servers))){var _,O=r(i.servers);try{for(O.s();!(_=O.n()).done;){var A=_.value,R=g(A),C=u.parse(R.url);C.protocol=S,R.url=C.format(),c.servers.push(R)}}catch(e){O.e(e)}finally{O.f()}}}}catch(e){E.e(e)}finally{E.f()}}if(n.debug&&(c["x-s2o-consumes"]=c.consumes||[],c["x-s2o-produces"]=c.produces||[]),c){if(delete c.consumes,delete c.produces,delete c.schemes,c["x-ms-examples"]){for(var T in c["x-ms-examples"]){var I=c["x-ms-examples"][T],L=k.sanitiseAll(T);if(I.parameters)for(var D in I.parameters){var z,U=I.parameters[D],B=r((c.parameters||[]).concat(s.parameters||[]));try{for(B.s();!(z=B.n()).done;){var $=z.value;$.$ref&&($=h.jptr(i,$.$ref)),$.name!==D||$.example||($.examples||($.examples={}),$.examples[T]={value:U})}}catch(e){B.e(e)}finally{B.f()}}if(I.responses)for(var q in I.responses){if(I.responses[q].headers)for(var V in I.responses[q].headers){var W=I.responses[q].headers[V];for(var H in c.responses[q].headers)H===V&&(c.responses[q].headers[H].example=W)}if(I.responses[q].body&&(i.components.examples[L]={value:g(I.responses[q].body)},c.responses[q]&&c.responses[q].content))for(var Y in c.responses[q].content){var G=c.responses[q].content[Y];G.examples||(G.examples={}),G.examples[T]={$ref:"#/components/examples/"+L}}}}delete c["x-ms-examples"]}if(c.parameters&&0===c.parameters.length&&delete c.parameters,c.requestBody){var Q=c.operationId?k.sanitiseAll(c.operationId):k.sanitiseAll(l+a).toCamelCase(),X=k.sanitise(c.requestBody["x-s2o-name"]||Q||"");delete c.requestBody["x-s2o-name"];var K=JSON.stringify(c.requestBody),Z=k.hash(K);if(!o[Z]){var J={};J.name=X,J.body=c.requestBody,J.refs=[],o[Z]=J}var ee="#/"+t+"/"+encodeURIComponent(h.jpescape(a))+"/"+l+"/requestBody";o[Z].refs.push(ee)}}}if(s&&s.parameters){for(var te in s.parameters)M(s.parameters[te],null,s,null,a,i,n);!n.debug&&Array.isArray(s.parameters)&&(s.parameters=s.parameters.filter(j))}}}function U(e){return e&&e.url&&"string"==typeof e.url?(e.url=e.url.split("{{").join("{"),e.url=e.url.split("}}").join("}"),e.url.replace(/\{(.+?)\}/g,(function(t,n){e.variables||(e.variables={}),e.variables[n]={default:"unknown"}})),e):e}function B(e,t,n){if(void 0===e.info||null===e.info){if(!t.patch)return n(new O("(Patchable) info object is mandatory"));t.patches++,e.info={version:"",title:""}}if("object"!=typeof e.info||Array.isArray(e.info))return n(new O("info must be an object"));if(void 0===e.info.title||null===e.info.title){if(!t.patch)return n(new O("(Patchable) info.title cannot be null"));t.patches++,e.info.title=""}if(void 0===e.info.version||null===e.info.version){if(!t.patch)return n(new O("(Patchable) info.version cannot be null"));t.patches++,e.info.version=""}if("string"!=typeof e.info.version){if(!t.patch)return n(new O("(Patchable) info.version must be a string"));t.patches++,e.info.version=e.info.version.toString()}if(void 0!==e.info.logo){if(!t.patch)return n(new O("(Patchable) info should not have logo property"));t.patches++,e.info["x-logo"]=e.info.logo,delete e.info.logo}if(void 0!==e.info.termsOfService){if(null===e.info.termsOfService){if(!t.patch)return n(new O("(Patchable) info.termsOfService cannot be null"));t.patches++,e.info.termsOfService=""}try{new URL(e.info.termsOfService)}catch(r){if(!t.patch)return n(new O("(Patchable) info.termsOfService must be a URL"));t.patches++,delete e.info.termsOfService}}}function $(e,t,n){if(void 0===e.paths){if(!t.patch)return n(new O("(Patchable) paths object is mandatory"));t.patches++,e.paths={}}}function q(e,t,n){return p(n,new Promise((function(n,o){if(e||(e={}),t.original=e,t.text||(t.text=d.stringify(e)),t.externals=[],t.externalRefs={},t.rewriteRefs=!0,t.preserveMiro=!0,t.promise={},t.promise.resolve=n,t.promise.reject=o,t.patches=0,t.cache||(t.cache={}),t.source&&(t.cache[t.source]=t.original),function(e,t){var n=new WeakSet;b(e,{identityDetection:!0},(function(e,r,o){"object"==typeof e[r]&&null!==e[r]&&(n.has(e[r])?t.anchors?e[r]=g(e[r]):A("YAML anchor or merge key at "+o.path,t):n.add(e[r]))}))}(e,t),e.openapi&&"string"==typeof e.openapi&&e.openapi.startsWith("3."))return t.openapi=y(e),B(t.openapi,t,o),$(t.openapi,t,o),void x.optionalResolve(t).then((function(){return t.direct?n(t.openapi):n(t)})).catch((function(e){console.warn(e),o(e)}));if(!e.swagger||"2.0"!=e.swagger)return o(new O("Unsupported swagger/OpenAPI version: "+(e.openapi?e.openapi:e.swagger)));var i=t.openapi={};if(i.openapi="string"==typeof t.targetVersion&&t.targetVersion.startsWith("3.")?t.targetVersion:_,t.origin){i["x-origin"]||(i["x-origin"]=[]);var a={};a.url=t.source||t.origin,a.format="swagger",a.version=e.swagger,a.converter={},a.converter.url="https://github.com/mermade/oas-kit",a.converter.version=S,i["x-origin"].push(a)}if(delete(i=Object.assign(i,y(e))).swagger,b(i,{},(function(e,t,n){null===e[t]&&!t.startsWith("x-")&&"default"!==t&&n.path.indexOf("/example")<0&&delete e[t]})),e.host){var s,c=r(Array.isArray(e.schemes)?e.schemes:[""]);try{for(c.s();!(s=c.n()).done;){var u=s.value,p={},f=(e.basePath||"").replace(/\/$/,"");p.url=(u?u+":":"")+"//"+e.host+f,U(p),i.servers||(i.servers=[]),i.servers.push(p)}}catch(e){c.e(e)}finally{c.f()}}else if(e.basePath){var v={};v.url=e.basePath,U(v),i.servers||(i.servers=[]),i.servers.push(v)}if(delete i.host,delete i.basePath,i["x-servers"]&&Array.isArray(i["x-servers"])&&(i.servers=i["x-servers"],delete i["x-servers"]),e["x-ms-parameterized-host"]){var w=e["x-ms-parameterized-host"],E={};E.url=w.hostTemplate+(e.basePath?e.basePath:""),E.variables={};var R=E.url.match(/\{\w+\}/g);for(var j in w.parameters){var N=w.parameters[j];N.$ref&&(N=g(m(i,N.$ref))),j.startsWith("x-")||(delete N.required,delete N.type,delete N.in,void 0===N.default&&(N.enum?N.default=N.enum[0]:N.default="none"),N.name||(N.name=R[j].replace("{","").replace("}","")),E.variables[N.name]=N,delete N.name)}i.servers||(i.servers=[]),!1===w.useSchemePrefix?i.servers.push(E):e.schemes.forEach((function(e){i.servers.push(Object.assign({},E,{url:e+"://"+E.url}))})),delete i["x-ms-parameterized-host"]}B(i,t,o),$(i,t,o),"string"==typeof i.consumes&&(i.consumes=[i.consumes]),"string"==typeof i.produces&&(i.produces=[i.produces]),i.components={},i["x-callbacks"]&&(i.components.callbacks=i["x-callbacks"],delete i["x-callbacks"]),i.components.examples={},i.components.headers={},i["x-links"]&&(i.components.links=i["x-links"],delete i["x-links"]),i.components.parameters=i.parameters||{},i.components.responses=i.responses||{},i.components.requestBodies={},i.components.securitySchemes=i.securityDefinitions||{},i.components.schemas=i.definitions||{},delete i.definitions,delete i.responses,delete i.parameters,delete i.securityDefinitions,x.optionalResolve(t).then((function(){(function(e,t){var n={};for(var r in l={schemas:{}},e.security&&P(e.security),e.components.securitySchemes){var o=k.sanitise(r);r!==o&&(e.components.securitySchemes[o]&&A("Duplicate sanitised securityScheme name "+o,t),e.components.securitySchemes[o]=e.components.securitySchemes[r],delete e.components.securitySchemes[r]),I(e.components.securitySchemes[o],t)}for(var i in e.components.schemas){var a=k.sanitiseAll(i),s="";if(i!==a){for(;e.components.schemas[a+s];)s=s?++s:2;e.components.schemas[a+s]=e.components.schemas[i],delete e.components.schemas[i]}l.schemas[i]=a+s,C(e.components.schemas[a+s],t)}for(var c in t.refmap={},b(e,{payload:{options:t}},T),function(e,t){for(var n in t.refmap)h.jptr(e,n,{$ref:t.refmap[n]})}(e,t),e.components.parameters){var u=k.sanitise(c);c!==u&&(e.components.parameters[u]&&A("Duplicate sanitised parameter name "+u,t),e.components.parameters[u]=e.components.parameters[c],delete e.components.parameters[c]),M(e.components.parameters[u],null,null,null,u,e,t)}for(var p in e.components.responses){var f=k.sanitise(p);p!==f&&(e.components.responses[f]&&A("Duplicate sanitised response name "+f,t),e.components.responses[f]=e.components.responses[p],delete e.components.responses[p]);var d=e.components.responses[f];if(F(d,0,null,e,t),d.headers)for(var m in d.headers)"status code"===m.toLowerCase()?t.patch?(t.patches++,delete d.headers[m]):A('(Patchable) "Status Code" is not a valid header',t):L(d.headers[m],t)}for(var v in e.components.requestBodies){var y=e.components.requestBodies[v],x=JSON.stringify(y),w=k.hash(x),E={};E.name=v,E.body=y,E.refs=[],n[w]=E}if(z(e.paths,"paths",t,n,e),e["x-ms-paths"]&&z(e["x-ms-paths"],"x-ms-paths",t,n,e),!t.debug)for(var S in e.components.parameters)e.components.parameters[S]["x-s2o-delete"]&&delete e.components.parameters[S];t.debug&&(e["x-s2o-consumes"]=e.consumes||[],e["x-s2o-produces"]=e.produces||[]),delete e.consumes,delete e.produces,delete e.schemes;var _=[];if(e.components.requestBodies={},!t.resolveInternal){var O=1;for(var R in n){var j=n[R];if(j.refs.length>1){var N="";for(j.name||(j.name="requestBody",N=O++);_.indexOf(j.name+N)>=0;)N=N?++N:2;for(var D in j.name=j.name+N,_.push(j.name),e.components.requestBodies[j.name]=g(j.body),j.refs){var U={};U.$ref="#/components/requestBodies/"+j.name,h.jptr(e,j.refs[D],U)}}}}e.components.responses&&0===Object.keys(e.components.responses).length&&delete e.components.responses,e.components.parameters&&0===Object.keys(e.components.parameters).length&&delete e.components.parameters,e.components.examples&&0===Object.keys(e.components.examples).length&&delete e.components.examples,e.components.requestBodies&&0===Object.keys(e.components.requestBodies).length&&delete e.components.requestBodies,e.components.securitySchemes&&0===Object.keys(e.components.securitySchemes).length&&delete e.components.securitySchemes,e.components.headers&&0===Object.keys(e.components.headers).length&&delete e.components.headers,e.components.schemas&&0===Object.keys(e.components.schemas).length&&delete e.components.schemas,e.components&&0===Object.keys(e.components).length&&delete e.components})(t.openapi,t),t.direct?n(t.openapi):n(t)})).catch((function(e){console.warn(e),o(e)}))})))}function V(e,t,n){return p(n,new Promise((function(n,r){var o=null,i=null;try{o=JSON.parse(e),t.text=JSON.stringify(o,null,2)}catch(n){i=n;try{o=d.parse(e,{schema:"core",prettyErrors:!0}),t.sourceYaml=!0,t.text=e}catch(e){i=e}}o?q(o,t).then((function(e){return n(e)})).catch((function(e){return r(e)})):r(new O(i?i.message:"Could not parse string"))})))}e.exports={S2OError:O,targetVersion:_,convert:q,convertObj:q,convertUrl:function(e,t,n){return p(n,new Promise((function(n,r){t.origin=!0,t.source||(t.source=e),t.verbose&&console.warn("GET "+e),t.fetch||(t.fetch=f);var o=Object.assign({},t.fetchOptions,{agent:t.agent});t.fetch(e,o).then((function(t){if(200!==t.status)throw new O("Received status code ".concat(t.status,": ").concat(e));return t.text()})).then((function(e){V(e,t).then((function(e){return n(e)})).catch((function(e){return r(e)}))})).catch((function(e){r(e)}))})))},convertStr:V,convertFile:function(e,t,n){return p(n,new Promise((function(n,r){c.readFile(e,t.encoding||"utf8",(function(o,i){o?r(o):(t.sourceFile=e,V(i,t).then((function(e){return n(e)})).catch((function(e){return r(e)})))}))})))},convertStream:function(e,t,n){return p(n,new Promise((function(n,r){var o="";e.on("data",(function(e){o+=e})).on("end",(function(){V(o,t).then((function(e){return n(e)})).catch((function(e){return r(e)}))}))})))}}},873:function(e,t,n){"use strict";n(9601);var r=n(6177);e.exports={statusCodes:Object.assign({},{default:"Default response","1XX":"Informational",103:"Early hints","2XX":"Successful","3XX":"Redirection","4XX":"Client Error","5XX":"Server Error","7XX":"Developer Error"},r.STATUS_CODES)}},1683:function(e){e.exports={}},5623:function(e){"use strict";function t(e,t,o){e instanceof RegExp&&(e=n(e,o)),t instanceof RegExp&&(t=n(t,o));var i=r(e,t,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+e.length,i[1]),post:o.slice(i[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,o,i,a,s,l=n.indexOf(e),c=n.indexOf(t,l+1),u=l;if(l>=0&&c>0){if(e===t)return[l,c];for(r=[],i=n.length;u>=0&&!s;)u==l?(r.push(u),l=n.indexOf(e,u+1)):1==r.length?s=[r.pop(),c]:((o=r.pop())=0?l:c;r.length&&(s=[i,a])}return s}e.exports=t,t.range=r},9742:function(e,t){"use strict";t.byteLength=function(e){var t=l(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,i=l(e),a=i[0],s=i[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,a,s)),u=0,p=s>0?a-4:a;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;return 2===s&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t),1===s&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t),c},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],a=16383,s=0,l=r-o;sl?l:s+a));return 1===o?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),i.join("")};for(var n=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,s=i.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,r){for(var o,i,a=[],s=t;s>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},3644:function(e,t,n){var r=n(1048),o=n(5623);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(i).split("\\{").join(a).split("\\}").join(s).split("\\,").join(l).split("\\.").join(c)}(e),!0).map(p)):[]};var i="\0SLASH"+Math.random()+"\0",a="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",l="\0COMMA"+Math.random()+"\0",c="\0PERIOD"+Math.random()+"\0";function u(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function p(e){return e.split(i).join("\\").split(a).join("{").split(s).join("}").split(l).join(",").split(c).join(".")}function f(e){if(!e)return[""];var t=[],n=o("{","}",e);if(!n)return e.split(",");var r=n.pre,i=n.body,a=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var l=f(a);return a.length&&(s[s.length-1]+=l.shift(),s.push.apply(s,l)),t.push.apply(t,s),t}function d(e){return"{"+e+"}"}function h(e){return/^-?0\d/.test(e)}function m(e,t){return e<=t}function v(e,t){return e>=t}function g(e,t){var n=[],i=o("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var a,l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),p=l||c,y=i.body.indexOf(",")>=0;if(!p&&!y)return i.post.match(/,.*\}/)?g(e=i.pre+"{"+i.body+s+i.post):[e];if(p)a=i.body.split(/\.\./);else if(1===(a=f(i.body)).length&&1===(a=g(a[0],!1).map(d)).length)return(w=i.post.length?g(i.post,!1):[""]).map((function(e){return i.pre+a[0]+e}));var b,x=i.pre,w=i.post.length?g(i.post,!1):[""];if(p){var k=u(a[0]),E=u(a[1]),S=Math.max(a[0].length,a[1].length),_=3==a.length?Math.abs(u(a[2])):1,O=m;E0){var P=new Array(T+1).join("0");C=R<0?"-"+P+C.slice(1):P+C}}b.push(C)}}else b=r(a,(function(e){return g(e,!1)}));for(var I=0;Ia)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|m(e,t),r=s(n),o=r.write(e,t);return o!==n&&(r=r.slice(0,o)),r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(B(e,Uint8Array)){var t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(B(e,ArrayBuffer)||e&&B(e.buffer,ArrayBuffer))return d(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(B(e,SharedArrayBuffer)||e&&B(e.buffer,SharedArrayBuffer)))return d(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,n);var o=function(e){if(l.isBuffer(e)){var t=0|h(e.length),n=s(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||$(e.length)?s(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return u(e),s(e<0?0:0|h(e))}function f(e){for(var t=e.length<0?0:0|h(e.length),n=s(t),r=0;r=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||B(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(o)return r?-1:F(e).length;t=(""+t).toLowerCase(),o=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return O(this,t,n);case"ascii":return R(this,t,n);case"latin1":case"binary":return C(this,t,n);case"base64":return _(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function y(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),$(n=+n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,o){var i,a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var u=-1;for(i=n;is&&(n=s-l),i=n;i>=0;i--){for(var p=!0,f=0;fo&&(r=o):r=o;var i=t.length;r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function _(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function O(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+p<=n)switch(p){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(l=(15&c)<<12|(63&i)<<6|63&a)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(l=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,p=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=p}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr.length?l.from(i).copy(r,o):Uint8Array.prototype.set.call(r,i,o);else{if(!l.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,o)}o+=i.length}return r},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tn&&(e+=" ... "),""},i&&(l.prototype[i]=l.prototype.inspect),l.prototype.compare=function(e,t,n,r,o){if(B(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),c=this.slice(r,o),u=e.slice(t,n),p=0;p>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return x(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":case"latin1":case"binary":return k(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function R(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function L(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,i){return t=+t,n>>>=0,i||L(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function M(e,t,n,r,i){return t=+t,n>>>=0,i||L(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i>>=0,t>>>=0,n||I(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,n,r){e=+e,t>>>=0,n>>>=0,r||j(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,r||j(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);j(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);j(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return M(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return M(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function z(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(D,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function U(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function B(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}var q=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,o=0;o<16;++o)t[r+o]=e[n]+e[o];return t}()},4480:function(e,t,n){"use strict";var r=n.g.process&&process.nextTick||n.g.setImmediate||function(e){setTimeout(e,0)};e.exports=function(e,t){return e?void t.then((function(t){r((function(){e(null,t)}))}),(function(t){r((function(){e(t)}))})):t}},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),o=n(7908),i=n(3411),a=n(7659),s=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,p,f,d,h=o(e),m="function"==typeof this?this:Array,v=arguments.length,g=v>1?arguments[1]:void 0,y=void 0!==g,b=c(h),x=0;if(y&&(g=r(g,v>2?arguments[2]:void 0,2)),null==b||m==Array&&a(b))for(n=new m(t=s(h.length));t>x;x++)d=y?g(h[x],x):h[x],l(n,x,d);else for(f=(p=b.call(h)).next,n=new m;!(u=f.call(p)).done;x++)d=y?i(p,g,[u.value,x],!0):u.value,l(n,x,d);return n.length=x,n}},1318:function(e,t,n){var r=n(5656),o=n(7466),i=n(1400),a=function(e){return function(t,n,a){var s,l=r(t),c=o(l.length),u=i(a,c);if(e&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:function(e,t,n){var r=n(9974),o=n(8361),i=n(7908),a=n(7466),s=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,p=6==e,f=7==e,d=5==e||p;return function(h,m,v,g){for(var y,b,x=i(h),w=o(x),k=r(m,v,3),E=a(w.length),S=0,_=g||s,O=t?_(h,E):n||f?_(h,0):void 0;E>S;S++)if((d||S in w)&&(b=k(y=w[S],S,x),e))if(t)O[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:l.call(O,y)}else switch(e){case 4:return!1;case 7:l.call(O,y)}return p?-1:c||u?u:O}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},1194:function(e,t,n){var r=n(7293),o=n(5112),i=n(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},2133:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},4362:function(e){var t=Math.floor,n=function(e,i){var a=e.length,s=t(a/2);return a<8?r(e,i):o(n(e.slice(0,s),i),n(e.slice(s),i),i)},r=function(e,t){for(var n,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=n)}return e},o=function(e,t,n){for(var r=e.length,o=t.length,i=0,a=0,s=[];i1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),i(u.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&r(u.prototype,"size",{get:function(){return d(this).size}}),u},setStrong:function(e,t,n){var r=t+" Iterator",o=m(t),i=m(r);c(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),u(t)}}},9320:function(e,t,n){"use strict";var r=n(2248),o=n(2423).getWeakData,i=n(9670),a=n(111),s=n(5787),l=n(612),c=n(2092),u=n(6656),p=n(9909),f=p.set,d=p.getterFor,h=c.find,m=c.findIndex,v=0,g=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=m(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,c){var p=e((function(e,r){s(e,p,t),f(e,{type:t,id:v++,frozen:void 0}),null!=r&&l(r,e[c],{that:e,AS_ENTRIES:n})})),h=d(t),m=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?g(r).set(t,n):a[r.id]=n,e};return r(p.prototype,{delete:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t).delete(e):n&&u(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t).has(e):n&&u(n,t.id)}}),r(p.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?g(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return m(this,e,t)}}:{add:function(e){return m(this,e,!0)}}),p}}},7710:function(e,t,n){"use strict";var r=n(2109),o=n(7854),i=n(4705),a=n(1320),s=n(2423),l=n(612),c=n(5787),u=n(111),p=n(7293),f=n(7072),d=n(8003),h=n(9587);e.exports=function(e,t,n){var m=-1!==e.indexOf("Map"),v=-1!==e.indexOf("Weak"),g=m?"set":"add",y=o[e],b=y&&y.prototype,x=y,w={},k=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(v&&!u(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return v&&!u(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(v&&!u(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(v||b.forEach&&!p((function(){(new y).entries().next()})))))x=n.getConstructor(t,e,m,g),s.REQUIRED=!0;else if(i(e,!0)){var E=new x,S=E[g](v?{}:-0,1)!=E,_=p((function(){E.has(1)})),O=f((function(e){new y(e)})),A=!v&&p((function(){for(var e=new y,t=5;t--;)e[g](t,t);return!e.has(-0)}));O||((x=t((function(t,n){c(t,x,e);var r=h(new y,t,x);return null!=n&&l(n,r[g],{that:r,AS_ENTRIES:m}),r}))).prototype=b,b.constructor=x),(_||A)&&(k("delete"),k("has"),m&&k("get")),(A||S)&&k(g),v&&b.clear&&delete b.clear}return w[e]=x,r({global:!0,forced:x!=y},w),d(x,e),v||n.setStrong(x,e,m),x}},9920:function(e,t,n){var r=n(6656),o=n(3887),i=n(1236),a=n(3070);e.exports=function(e,t){for(var n=o(t),s=a.f,l=i.f,c=0;c"+a+""}},4994:function(e,t,n){"use strict";var r=n(3383).IteratorPrototype,o=n(30),i=n(9114),a=n(8003),s=n(7497),l=function(){return this};e.exports=function(e,t,n){var c=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,c,!1,!0),s[c]=l,e}},8880:function(e,t,n){var r=n(9781),o=n(3070),i=n(9114);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},9114:function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},6135:function(e,t,n){"use strict";var r=n(7593),o=n(3070),i=n(9114);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},8709:function(e,t,n){"use strict";var r=n(9670),o=n(7593);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},654:function(e,t,n){"use strict";var r=n(2109),o=n(4994),i=n(9518),a=n(7674),s=n(8003),l=n(8880),c=n(1320),u=n(5112),p=n(1913),f=n(7497),d=n(3383),h=d.IteratorPrototype,m=d.BUGGY_SAFARI_ITERATORS,v=u("iterator"),g="keys",y="values",b="entries",x=function(){return this};e.exports=function(e,t,n,u,d,w,k){o(n,t,u);var E,S,_,O=function(e){if(e===d&&P)return P;if(!m&&e in C)return C[e];switch(e){case g:case y:case b:return function(){return new n(this,e)}}return function(){return new n(this)}},A=t+" Iterator",R=!1,C=e.prototype,T=C[v]||C["@@iterator"]||d&&C[d],P=!m&&T||O(d),I="Array"==t&&C.entries||T;if(I&&(E=i(I.call(new e)),h!==Object.prototype&&E.next&&(p||i(E)===h||(a?a(E,h):"function"!=typeof E[v]&&l(E,v,x)),s(E,A,!0,!0),p&&(f[A]=x))),d==y&&T&&T.name!==y&&(R=!0,P=function(){return T.call(this)}),p&&!k||C[v]===P||l(C,v,P),f[t]=P,d)if(S={values:O(y),keys:w?P:O(g),entries:O(b)},k)for(_ in S)(m||R||!(_ in C))&&c(C,_,S[_]);else r({target:t,proto:!0,forced:m||R},S);return S}},7235:function(e,t,n){var r=n(857),o=n(6656),i=n(6061),a=n(3070).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},9781:function(e,t,n){var r=n(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(e,t,n){var r=n(7854),o=n(111),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},8324:function(e){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8886:function(e,t,n){var r=n(8113).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},7871:function(e){e.exports="object"==typeof window},256:function(e,t,n){var r=n(8113);e.exports=/MSIE|Trident/.test(r)},6833:function(e,t,n){var r=n(8113);e.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},5268:function(e,t,n){var r=n(4326),o=n(7854);e.exports="process"==r(o.process)},1036:function(e,t,n){var r=n(8113);e.exports=/web0s(?!.*chrome)/i.test(r)},8113:function(e,t,n){var r=n(5005);e.exports=r("navigator","userAgent")||""},7392:function(e,t,n){var r,o,i=n(7854),a=n(8113),s=i.process,l=s&&s.versions,c=l&&l.v8;c?o=(r=c.split("."))[0]<4?1:r[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},8008:function(e,t,n){var r=n(8113).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),o=n(1236).f,i=n(8880),a=n(1320),s=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,p,f,d,h=e.target,m=e.global,v=e.stat;if(n=m?r:v?r[h]||s(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],p=e.noTargetGet?(d=o(n,u))&&d.value:n[u],!c(m?u:h+(v?".":"#")+u,e.forced)&&void 0!==p){if(typeof f==typeof p)continue;l(f,p)}(e.sham||p&&p.sham)&&i(f,"sham",!0),a(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),o=n(2261),i=n(7293),a=n(5112),s=n(8880),l=a("species"),c=RegExp.prototype,u=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),p="$0"==="a".replace(/./,"$0"),f=a("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),h=!i((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var m=a(e),v=!i((function(){var t={};return t[m]=function(){return 7},7!=""[e](t)})),g=v&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[m]=/./[m]),n.exec=function(){return t=!0,null},n[m](""),!t}));if(!v||!g||"replace"===e&&(!u||!p||d)||"split"===e&&!h){var y=/./[m],b=n(m,""[e],(function(e,t,n,r,i){var a=t.exec;return a===o||a===c.exec?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:p,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),x=b[0],w=b[1];r(String.prototype,e,x),r(c,m,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}f&&s(c[m],"sham",!0)}},6790:function(e,t,n){"use strict";var r=n(3157),o=n(7466),i=n(9974),a=function(e,t,n,s,l,c,u,p){for(var f,d=l,h=0,m=!!u&&i(u,p,3);h0&&r(f))d=a(e,t,f,o(f.length),d,c-1)-1;else{if(d>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[d]=f}d++}h++}return d};e.exports=a},6677:function(e,t,n){var r=n(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),o=n(7854),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},1246:function(e,t,n){var r=n(648),o=n(7497),i=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[i]||e["@@iterator"]||o[r(e)]}},8554:function(e,t,n){var r=n(9670),o=n(1246);e.exports=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,l,c,u){var p=n+e.length,f=l.length,d=s;return void 0!==c&&(c=r(c),d=a),i.call(u,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(p);case"<":a=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return r;if(s>f){var u=o(s/10);return 0===u?r:u<=f?void 0===l[u-1]?i.charAt(1):l[u-1]+i.charAt(1):r}a=l[s-1]}return void 0===a?"":a}))}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e,t,n){var r=n(7908),o={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return o.call(r(e),t)}},3501:function(e){e.exports={}},842:function(e,t,n){var r=n(7854);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),o=n(7293),i=n(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:function(e,t,n){var r=n(7293),o=n(4326),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),o=n(7674);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},2788:function(e,t,n){var r=n(5465),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},2423:function(e,t,n){var r=n(3501),o=n(111),i=n(6656),a=n(3070).f,s=n(9711),l=n(6677),c=s("meta"),u=0,p=Object.isExtensible||function(){return!0},f=function(e){a(e,c,{value:{objectID:"O"+ ++u,weakData:{}}})},d=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,c)){if(!p(e))return"F";if(!t)return"E";f(e)}return e[c].objectID},getWeakData:function(e,t){if(!i(e,c)){if(!p(e))return!0;if(!t)return!1;f(e)}return e[c].weakData},onFreeze:function(e){return l&&d.REQUIRED&&p(e)&&!i(e,c)&&f(e),e}};r[c]=!0},9909:function(e,t,n){var r,o,i,a=n(8536),s=n(7854),l=n(111),c=n(8880),u=n(6656),p=n(5465),f=n(6200),d=n(3501),h="Object already initialized",m=s.WeakMap;if(a||p.state){var v=p.state||(p.state=new m),g=v.get,y=v.has,b=v.set;r=function(e,t){if(y.call(v,e))throw new TypeError(h);return t.facade=e,b.call(v,e,t),t},o=function(e){return g.call(v,e)||{}},i=function(e){return y.call(v,e)}}else{var x=f("state");d[x]=!0,r=function(e,t){if(u(e,x))throw new TypeError(h);return t.facade=e,c(e,x,t),t},o=function(e){return u(e,x)?e[x]:{}},i=function(e){return u(e,x)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),o=n(7497),i=r("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),o=/#|\.prototype\./,i=function(e,t){var n=s[a(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},s=i.data={},l=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),o=n(4326),i=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},612:function(e,t,n){var r=n(9670),o=n(7659),i=n(7466),a=n(9974),s=n(1246),l=n(9212),c=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,n){var u,p,f,d,h,m,v,g=n&&n.that,y=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=a(t,g,1+y+x),k=function(e){return u&&l(u),new c(!0,e)},E=function(e){return y?(r(e),x?w(e[0],e[1],k):w(e[0],e[1])):x?w(e,k):w(e)};if(b)u=e;else{if("function"!=typeof(p=s(e)))throw TypeError("Target is not iterable");if(o(p)){for(f=0,d=i(e.length);d>f;f++)if((h=E(e[f]))&&h instanceof c)return h;return new c(!1)}u=p.call(e)}for(m=u.next;!(v=m.call(u)).done;){try{h=E(v.value)}catch(e){throw l(u),e}if("object"==typeof h&&h&&h instanceof c)return h}return new c(!1)}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,o,i,a=n(7293),s=n(9518),l=n(8880),c=n(6656),u=n(5112),p=n(1913),f=u("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=s(s(i)))!==Object.prototype&&(r=o):d=!0);var h=null==r||a((function(){var e={};return r[f].call(e)!==e}));h&&(r={}),p&&!h||c(r,f)||l(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},7497:function(e){e.exports={}},5948:function(e,t,n){var r,o,i,a,s,l,c,u,p=n(7854),f=n(1236).f,d=n(261).set,h=n(6833),m=n(1036),v=n(5268),g=p.MutationObserver||p.WebKitMutationObserver,y=p.document,b=p.process,x=p.Promise,w=f(p,"queueMicrotask"),k=w&&w.value;k||(r=function(){var e,t;for(v&&(e=b.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?a():i=void 0,e}}i=void 0,e&&e.enter()},h||v||m||!g||!y?x&&x.resolve?((c=x.resolve(void 0)).constructor=x,u=c.then,a=function(){u.call(c,r)}):a=v?function(){b.nextTick(r)}:function(){d.call(p,r)}:(s=!0,l=y.createTextNode(""),new g(r).observe(l,{characterData:!0}),a=function(){l.data=s=!s})),e.exports=k||function(e){var t={fn:e,next:void 0};i&&(i.next=t),o||(o=t,a()),i=t}},3366:function(e,t,n){var r=n(7854);e.exports=r.Promise},133:function(e,t,n){var r=n(7392),o=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},590:function(e,t,n){var r=n(7293),o=n(5112),i=n(1913),a=o("iterator");e.exports=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),i&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://теÑÑ‚").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},8536:function(e,t,n){var r=n(7854),o=n(2788),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},8523:function(e,t,n){"use strict";var r=n(3099),o=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},3929:function(e,t,n){var r=n(7850);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},1574:function(e,t,n){"use strict";var r=n(9781),o=n(7293),i=n(1956),a=n(5181),s=n(5296),l=n(7908),c=n(8361),u=Object.assign,p=Object.defineProperty;e.exports=!u||o((function(){if(r&&1!==u({b:1},u(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||i(u({},t)).join("")!=o}))?function(e,t){for(var n=l(e),o=arguments.length,u=1,p=a.f,f=s.f;o>u;)for(var d,h=c(arguments[u++]),m=p?i(h).concat(p(h)):i(h),v=m.length,g=0;v>g;)d=m[g++],r&&!f.call(h,d)||(n[d]=h[d]);return n}:u},30:function(e,t,n){var r,o=n(9670),i=n(6048),a=n(748),s=n(3501),l=n(490),c=n(317),u=n(6200)("IE_PROTO"),p=function(){},f=function(e){return" diff --git a/src/ui/src/api/client/.gitkeep b/src/ui/src/api/client/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/ui/src/api/config.ts b/src/ui/src/api/config.ts new file mode 100644 index 00000000..40753248 --- /dev/null +++ b/src/ui/src/api/config.ts @@ -0,0 +1,4 @@ +export const API_URL = "/api/" +export default API_URL + +export const SITE_URL = "" diff --git a/src/ui/src/api/index.ts b/src/ui/src/api/index.ts new file mode 100644 index 00000000..e65c8b2e --- /dev/null +++ b/src/ui/src/api/index.ts @@ -0,0 +1,17 @@ +import { AccountApi, TagsApi, UsersApi, EnvironmentsApi, ErrorMessage } from "@/api/client" +import axiosInstance from "@/api/axios" +import { SITE_URL } from "@/api/config" +export const accountApi = new AccountApi(undefined, SITE_URL, axiosInstance) +export const tagApi = new TagsApi(undefined, SITE_URL, axiosInstance) +export const userApi = new UsersApi(undefined, SITE_URL, axiosInstance) +export const environmentApi = new EnvironmentsApi(undefined, SITE_URL, axiosInstance) + +export function isApiError(object: any): object is ErrorMessage | undefined { + if ("error" in object) { + return true + } else if (object === undefined) { + return true + } else { + return false + } +} diff --git a/src/ui/src/api/types.ts b/src/ui/src/api/types.ts new file mode 100644 index 00000000..fce1093f --- /dev/null +++ b/src/ui/src/api/types.ts @@ -0,0 +1,81 @@ +import { + User, + + Users, + + ErrorMessage, + + +} from "@/api/client" +import { ComputedRef, reactive } from "vue" + +export const ANONYMOUS_USER: Readonly = Object.freeze({ + id: 0, + email: "", + fullName: "Anonymous", + isSuperuser: false, + isActive: false, + isVerified: false, +}) + +export const NO_TEAM: Readonly = Object.freeze({ + id: 0, + slug: "no-team", + name: "No Team", + uploads: [], +}) +const paginatedResults = Object.freeze({ + count: 0, + limit: 10, + skip: 0, + results: [], +}) +export const DEFAULT_TEAMS: Readonly = paginatedResults +export const DEFAULT_USERS: Readonly = paginatedResults + +export const notification = reactive({ + id: 0, + group: "", + message: "", + messageType: "info", + timeout: 3000, +}) +export interface Auth { + accessToken: string + tokenType: string + userId: string | null + authenticatedAt: Date | null + accessTokenValidUntil: Date | null +} +export const ANONYMOUS_AUTH: Readonly = Object.freeze({ + userId: "", + accessToken: "", + tokenType: "", + authenticatedAt: null, + accessTokenValidUntil: null, +}) + +export interface JwtOptions { + /** + * Value returned when encounter error on decoding + * + * @default null + */ + fallbackValue?: Fallback + /** + * Error callback for decoding + */ + onError?: (error: unknown) => void +} +export interface JwtResult { + header: ComputedRef

+ payload: ComputedRef +} + +export const BACKEND_UNAVAILABLE: Readonly = Object.freeze({ + error: { + code: 500, + message: "Backend unavailable", + status: "error", + }, +}) diff --git a/src/ui/src/assets/_app.css b/src/ui/src/assets/_app.css new file mode 100644 index 00000000..441371db --- /dev/null +++ b/src/ui/src/assets/_app.css @@ -0,0 +1,24 @@ +/* body { + @apply pt-14 xl:pl-60; +} */ + +/* #app { + @apply w-screen transition-position lg:w-auto; +} */ + +.dropdown { + @apply cursor-pointer; +} + +.m-clipped, +.m-clipped body { + @apply overflow-hidden lg:overflow-visible; +} + +.full-screen body { + @apply p-0; +} + +.vtl-sortable { + @apply cursor-pointer; +} \ No newline at end of file diff --git a/src/ui/src/assets/_progress.css b/src/ui/src/assets/_progress.css new file mode 100644 index 00000000..760c7c02 --- /dev/null +++ b/src/ui/src/assets/_progress.css @@ -0,0 +1,19 @@ +progress { + @apply h-3 rounded-full overflow-hidden; +} + +progress::-webkit-progress-bar { + @apply bg-base-200 dark:bg-base-200-dark; +} + +progress::-webkit-progress-value { + @apply bg-green-500; +} + +progress::-moz-progress-bar { + @apply bg-green-500; +} + +progress::-ms-fill { + @apply bg-green-500 border-0; +} diff --git a/src/ui/src/assets/images/air-atmosphere-bright-cloudiness-139446.jpeg b/src/ui/src/assets/images/air-atmosphere-bright-cloudiness-139446.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..23e7e1e8196ebe2bcc3cf3e67a2b2e7936e92bf8 GIT binary patch literal 244140 zcmbrk2UJtv@;{mox)gx~K>_I{fYL$-=_T|4q4%0lq<0G-s3G(onsfq$BE2aBp$bSx zKt!rkL5gDe`tWzxy7#`f*8l(B`oEpztWRdoE;F;wKC|b{pT$3Gfa`EAT`d3*2n6U{ zeE@&fX)JZs)g6oxMq0Z1npYJ70F915%J)9WbpXJ}Hz)w1t;T6-Wz9)30U!ZT0muR3 z0DzNApr3)MmKorx=xVBS23|4!#s4W6^MI?K0Du`$9b-<;|Iq(GAqE$}fFJ+>Xne&j z>FO5fa)qBk@IXPKQ9k)<# zx1b~hxO1icf0zGl<-fW9 z_u#K>|HW}?@;^2MGQa%~?LTe*L%UxB0LY$S=_chrH0N9Zpe+snU|ISPjrRorK>q{) zXr25od6@sM7tf#|Kl!_NLqkLFpxj*U{8i|`%l|9Gzd8Tc;J?PZ^LM;|>yA^y&D|;3 zJBahIQeEzQ-wzJp4D@qyapM&Ie=g$xJHQ-Z8L$S}0_+2h0T+OuR~s1xkQT@UWCh*^@&Sc` z59pf4~O7zK<4CIHibIAAdl4{QW>0N(&dfK$Ntz)!$k;8)-e z5)cUu37CYPgrDRti7bgKi5`g=i5-ati9bmM$rF+!k{pr}l3J2hk~bt{By%KdB>N=i zAOPqZh#ABM5(UYE)ImldYmhrA0Q3-q0cC+oKy{!_&=6<_v<5l=U6PWMGLdqUijpdj z>X4d~x{&&lJ|xAG;z+AVTS*5&bh`r^q+R&nYM(w8!ZGK;dB@)hMYeFl2u5n+JyJm6?b?x!BoNEo& zhOd3Pc1goX1Eo=?v84&7NusHw>7{v3b4p7~%TKF9YfT$On?#GJ?WbL({Z7Y3cZW`w z&Xw*FT^?O4-89`1JrzA4y(+yueFS|LeG~m8{lRsr>-^W%uRC3Tcs=iW$MuEl=L}2? z;tWO%J`7lfYK9Sp&x{m|{EV86u8dC@OBwqaH<&<7JWT3LE=;jZWlTh-EigG)0IUl} zgA>36@C5i6!U&OqAR%FpJV*~@jTywu&#cSr&792ql6ju_#|`!ysyEzjJik$QWBSH7 zmRl?;EN(0qmU@;smLIH~teUJ|tf{PRtRHTY-h|#Xxfy!1@Fwx*!7cDDg8+AM5_Uqew zoDfb`PH)Z}&H>J2E;cS5u3)ZWt_iN6+ydO@+%eqs+#h(Td1QIqc`|tVc#e5*^BV9* z@z(Gz@lo-~@_F)Q^9}KR;}_t!;D5^B#{XG>ML<^|LZC)qMUYnTo}j;AiQuddxsa@o zmr#MwJ17Yh2K9vIK_`Vtgr$X1!Ue)pB4i?RBEBLeA`7B4qN<`HqBWwQ?l9lczY}w( z?at9%-n-U!Q|}Jl{YMNY<}Fqxwk*yl4i}FR?-c(k0hMr($dj0rq?Oc?d?eW}c_Jk& z!f#Ocx4=A@?{oe!Lr7(SlMAYGC4K5M{?bAm-5o` zLGmxJQX=H9#8L8W@cUO-4;~O`PVc7Ppp%R*lxNHcUHG zyH|%yM^7hJXF-=;*F_hvdkmL>KY$PD(de1#;q=z^q51*(odzTZaD#M%6+=ElU&A&d zfRV0Iy3q$?0b_sTE)#MSW0O3SZG<=?3Nd8LWa?mAZF*s*W|nNWY%XXXY~F{YN7^Fs z$Zr-J7HJl1mUk^5SdLlUv_e_6TT@sgtt+h0Z8U8%ZMJM-w(+*}b^>-`b|dyT?Y-@L z9OxaK9GV=-94#EH9e+6)Ih8n_JL@{XdQGB`kR-LSEbhTuhp-o{7VZLE+!=d5N z!*?RIBFZC4BV8iqdq-QeNg-m_|W-b-y@z!PabVO)_zI!W8lp-<0{(d#P1v3~3Q*8|en=tr?sdn2fVbhs=>IsjQ-G>g?d` zwH*DN_FUfFl-yr9PuyIdT3&rVTmJL>Zw0Oe(}gO9bw%t&2}M6%pk6E%YZtec@Rwwj zl9z^*ZkHj;hRS8j@f9~K5-NUI`c|%0A*u%OGI)G7TXk{`NlkFgZmn(YJAwwGy-u{Q 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%0DRe;1h*8w6Z{Lm~#c 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%0D!y>HiTAONpkD-e^+FTa)l}DVX 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%0AhlA5Tx8YlRX7LLgkE9f5D za4Q*Tubub{diPA>1It5V%PS2*Zl)4%a(>>Zu=#25l8fERtKy?766{g2=(W&ysX(RX zGf7pyOG5_))8kQPECjtiNsf5-ONc-MaQBGf~<0O~uXwXDq$b z{p6DyZ^CE+)!^s{oMlO}ad*7>l7v&)#>}6(5|9(I!~C(hGttvY3;8?C@u8+>WwHNR z^p4}cSIPLHb$s!yi+ST0Bw1KdsI{igFJ8vk2xjZ| z23yVFE7sws7=Sy_PdPPL=4wyI{id`fSsT!_VZ898c3BUw&vnD+S8h5m5iZ3A5}1k0 zCjEyLx5i`5iqF}Gq{Ey0qik=X?ZS~OXN9yjDDEFto|$Vex0&2YU@JJHLQ^s%PcEvI zf8F!z1v4_uJiw29Sp(9dBd4<5t)}0tAy+f*4l!jLR zGhm1_wo68GGGjf~+`=j2>izmsJ?1V3^mPQ_l>ahQW2cb%$Y5X;d|BK0Fc`r4@qn$l znoec^B*_|+AMni<)2w}Uk84!Ds(o> z$J)dA7NWIsmkUkybI*JQ8N#==u^m_8xK)&W#!56k6*~%TvC-FljcFZ)oW=Iuj}^Hn zD*qXmIe#k_k4$~~ZruUL4(iEWFMMz=J-3Bf&cBT4UVy0*O zhr6y%ozj<5S(qlv-yt_lMlhCL)G)n_Tkb=G?VCSp3QNQf%mYw`txuVWVgh%@s!LHo z+`$w~zS!8uP16o)C!rpCKG|4(osb;hP!oE7s=7Du4l_vkn$c)nW+6)RZ1&|1P^;d@ z+P%c?IJ_gKj6DTwx=DcKVS3LUb?#f3I!buVA$}v%-{|h7^E^+*Y%j1&gi%9HgN#W$ z*4yJ_T*`kjzlKYqw%6WsKxhwaHDVY{_Y;)p;ihvRwHs`*@EiI1&oR}JspolU%BMB0 zUZF-WdttVj>G%%XlDc|GT#ql9N{6S|t!FSlaQcQVvNfMeGBc=pr|&`ob!LXc_L0FAys~X(8{unV1;v!XpA3XyS}}&O*S}yRn$D zt@{bgM_^@$azLBfNzif@T9d-VHuD?du4=GCY?QeK3sE?GQXzKTdAVx$$2v*rAUc8( zC{)_mnpZ6YH**1%I@T_>DHSJw8EYRq8WRnQEtMO^ z&K17FDp8YN?GjR$V{Jv-I#@{QgdZp1sb-NwfP)1$VymLr}Uf*R=YJ;8NJO_bNqc+w4 zuRgSO`I$#ah4DQA1g;5`z2}m;ue-+1E zLit{=l|bydzuryYQK3?Hr}^BJ*Ad(ah1wA)?-MtcT;%P#L(W^}k)!%mm5*H-Nh~Av9Ohfv75=x}c>mw^O z>!jE6IvkKP?!X*<0K*?63nXlz^%Fxldm(gGlq?Z6WXTvkM@x9ym!MT5t}F$M~pg^|!wJx^%>*2SPY{eY%12Bogu$ ze33L$(PLiCny;oiR%}xgJ_<_t^vhisw4>v17@ldxcD^0&&}7f?ok{L~v!dhTq=rToz<=%kck`=9g^ZyI zc;RoZaP3AEuUlyI)wNwUu7y-2_{6lRLF>x*{^&D8_^wr9(lBQXsUTX>V(%fx8A(Nc zL1MuK67`c>W)fET3pz8jwiQY#EMWLMaDMP??;HyK=9cm7x)w}Ka>qg9u6&KGYaw%+ z4^VI6OLf_<(jT$m+Zk}87pl#l1d)@AR9bZYF^ganL32_d*+rh>%p_Cr<-N}sK>9-7 z=j6&i8wFW02PD^%%s9U>*%kxzWe|cRXu7PU>k0C zZ#qAqS-_tffw5B__0!2CHcO||X)9up6UxUMZ z4nM!m5W50f)Drmhir?DivC8eNO*f{qn)fqbJSAyOFLrE_KUFdUw;D8r_;~>b+<3RB ziceH6D6LiI-f~v&tp>{9`wbMrfR3c_!>9Ql!R`JUpZp_W-D)O;mo?t+k;g#R8{w>% zvy+)oa>rvSekBUj!Jk+T@Si09)agQ{uXiKQA66XaOZ7N=Mtl!EaIFbWa@2W5kLeT! zqP7b=-hS0%S0(J(C3f*$V3NIl+6af4ctIQBS?l6=5l-`iWRTAk4L#H;{w~s%t#|_E z^?9U{8Y_ALt>YTtA;ijC&nmDwnj0@wP-Tf!<_AtSi^XsCkrrY6G0)9&*3i*vGl$05 zN@>NCl@I=itk(A-inqwnOuJFPeqs1nN{hx16Rzc{s}$41{@pnN>21JPGk=0VaH4us zU+b)Ax$@=oDc9Xp{o%E$MR$JDG^@$7sEqL?Kebs^MVEZUT%0?3+Mq1I6)*p)*Nt0* zQaI<-b}8f^p2wvk&bVWDMf!Ta@;CL_>-9u$_|j%yfbG<~26a!92k;=xaONr;v!6CK zAq~Eqp?tEYHhd8Lewa*@26Sx$(#rQDM7zA*iD6#oO_1A9%?l@KowO~~+#sb!xl;j& z*}&!4WK{jm)7=28y|xY|QsHrq3(?bKg%8 zfop>mhD2~=-v_eHIvhDN@GcN8Gf!DG+5Zm`#6EM=y1qWJjNphRJ1Gh@l`M`D145=!@g*0jc(sfEt1 z7LgOfE>Nng$Xc0o-~Ip8Y^yYj+=_-1X)CT>PIHNz{@D?zM^A22IzycFUSi&$&nwIP zM5Y_NnevIjbs2|q6?{U=GO8jL3pm>Zf$0k66y4?i;ah@nr-;g8^puplM?r|cEScmYWoG#gHBh1N^Qdyebwg==YxFZrT*BWQO zh{f1gR%5FZW$)NXnVaS1!v2`5woWA+Wyq&3PUbOY^H(G7elO;Ib|Q3pCKlhx?KRZ* zhnng^ayO=$ACr9ps~F}=ZiH>sZq=n~6@w1{N8`jwyAWELw&SEdG{NeMc?$UzX=vD^ zKUKFHW%OU*)Rmxv9=%5`U6t#PUfCdRF}qen`tN1q_+8yP#)OaGOT9U<@A-?0FG!9O ztx!hg)>=9*5S(^+j70k++B9kgy)9V1ft1q8+!q5Gqf0w!(vrSk%xrW>szG(zv%^Ts zj0;=Bynq?p4hwzvq^G=BPn0?;5H9pUajv-Wte6JX;UuGaCDM})!X&TnBL#1Q7B4=! z7+TcFsp^_QsYENg56xZAIgrR>^dzPjnBq8rYNYAakW%6t)lnorWUSGrk+Q)iJpv3Q~2QVTbH*IQP@DcToA~p(#UiwrZ)Vqhd-wp!k|My#`CF zyAY8~zUxdmx6G4+mPsn-%MSp?G-E3yJ*tO{(CDBlo44;O>{{=%SB#bgY$F5j*VuS9 zsl4B`62h(vtq@CMc;uH<@KNRp$6)}djlW_vBVv5Zbl^fl52v(}s(a@JmX+ForgtLE zM6r;x``~^7bxfIa223;GNz;H&Z(ddDEKV9x&$WU?o0JejD;`r2jqQ#Sn~vP z$)tKy(~zhaMh*A-x&#ioejdR%TLjE~2L(@{kLY=Lx=OzUsQEScXfh8eN{xlLZ^Sfm z{Ex=&NnLZPuE%S~M=F2t(htUuaLi|>g_!dT$!q;lp1O4`jDOfofG$|{%}1|6S`$B& zLp_uiUqQs)Kykyc|bh|#R3MCv8hnO1On z4a4`+8q!&vufdk9xj4Nr!T!wv?U=?HIUo)EN914!>a&%ht%3bdX3}zVaC{SoD#f=4 z_~1!1uT6|%@`)_I3nnXPS75R~&;`Q_HA(|RAA$k>o^rC0tnMbBhQ zlByfdO)8c50-g+T+Q+^#p(<>E*sVu8)dsxlm=DK*{r~t5 zlz$df_+EGV>t&a1Qup zDx!h&g={(#?*j6IlENR${wz7d8T214cKKdMuUpW@G)@k7oL3c&X&UD*9|gLp$37Z% zficJGIw{gyLsoWC%%sJD% za(jxXSBKhza7d3+$Pf)AY~b0)nJO-7?obrXIaxSX(I~Ax*B2;(ge-^_9w}88umwkm7r$*UK1!fs~c*8)v8bgUK1Yba!}-YEmS8~`3F2jm&f~n7r!N(nVp>1 zm7mcqlhs*9GMU-&B)eDg9uK2P8dW;@}L@0!I7adydyCxyp zChb%@-{Wu(=k5~rBy;;tMHnl`)7dc1TJagxR|$yuR}qAjd=>Cz9o`*@&l*t8#I5s|*dH~WDuYroL) za^{B)^BT^ohh_KtaNwk~jBy2nm2KL{k2|hhfvyzeLSFbPq9MFK(W4AOk8fb=Hm8T- zzWO2)H6K7Zpn7MOoyqo_FGiV5QfCt%W(4WAnFb8vqXXV`m~Hhjs#5zxxL*{sg`d^v zg|b{mLCg)h1z1kS-bQj@2ZPG zj%LuE$;M!P#);%Go|4|65bjDVI%dt5D&<${DX6_y27^Kp-XO4f0}QrQ9B1y#LpE%l zEk7`;8(eiFs=ONGn$(jn`2lA1Omk{y_oB-P{8|1(yE29D$w(J%swoX@=ia9Rc5!8S zb)AY%mE-pN0f~lV=7{YV@&APCK9X8mGA2smIqoVR{efKGDwTovRhn$k6QXo`TWi|B z*P84ujZt0C@Aw3`*~lJP&KP8(J}-%A-kzHyO%M)W*7nO_540Mmz8*Xr0B*A86A}?+ zZw|ZhLBA&P5b^W{qmh3Nm!zx8OQMT=&f8&s_z`TsSB&U1-u&i0BmiVO;C zGK8bwlsHC5;?-;nN@#p&*ypM%)^;go7Cwu*8%bLE4m$60aR4FrFl*o64f&J%Yd%Nf zj&&M*i#9wn#yw>?nFB-Rtwtl-|Bu*Nr1>nJ-Zqhuw)TJpyTUZ1*E($MDN$3|rO)V2 zB@1gD^LJ(UB{#*=>@_Q`eE)7esEj*4C5No0M-sja=KDHseIp7+6mK1vf`Q0Zjv;?4 z3Dxn@@>#uJe=JOF$3bT$$A00F)A1*lgPMY~(6Y$U&opuLI}SCQM4WOuX6o@p&71Fy zJ31y<2htII!2{{fy_~F;D5F{8n6YQcwhHBCQt1ch9rBLZXPj%KLdXAD&lXGG3qPuh zk~B;EQYte;OTYDpwu&|(+3}3flBKfhJlTNt4*a^Sinn=eKVc+5V^9N`+OM9uVXwS> z7-zfk*6G;f6+07S=c}ekNsk^O5`JA#!{xbzAjf=50IAVdMP3DBq*-J!`9@ z|NKA5LFO$Zaj&7Ub2uLcfuFtMZ1Hp|CwnMr=96cK?0|phJzNaU-HZ@V**Py! zpvO@D0I8S{?RkC%r7`Zg*7R|`vEo6Y_}b$Dg(9~WPoe}&1Y>7oW*L){WHP;WYoQ^5 zl|#{EZ+2L?Ph{r1yvqex%ufzDJ_}9ZL$lk_$!~7i1686&8+}jwL-lP*B~$YTZd8?(|gi>e;o} z?GTYmNN`SGy(u7$z4)fzUQ&3z5#EoTbfo?0;Vf`3(NKIj@r!AuwBVCGU=`(bFR+1wpFIMWx5!3l z5x|^=emyyep}{5%b)a>Sn2_;H4RPv-yHf69Sejnfq>pI()qQY5yH#2rmjLx=tJXtN z^8m(IReGJJx7uv1dN{2{zLnu0$X-9(K-%#S<@zx|8j>`eYRH~x)FXks>hKBE^Z{9# zwW1S0HA?EDLcVro{S{rM&xbB{TC4sDY^E_uW|}hZ9AkNlni*beRFMGIg`rZBM323u}D(!>$gQ zRMnXAW|i4GBwo_P3lepIwUQXNAn=ajhfL&^sU;^C zf3d-PkONjyoZEFY<;Ex8Fu=rxq^2~VKoVTDv^}mcFs$S<>VZ?`W3QeBzz*Zw#*bbY z;*lv`yV%>w{xl7`tu_a-6mC=mB>RAB#$5C1m3nnzv>1kw6@~tM`kayBcJrzb5O@8D znUW(ETrvKAcTpfPIr=}`lksgqU}BF_B!iJg4KmY+#Njqyl6(^_Cv*iJCk$H0?@}+L&d==|AG!5Iu3nTsX`Fc zH#L!V$$gqPHDvWU`bN!+J?k}|uRW)58eg?Xd28Rc_E)#S)uNR6otcQiRZo@1FJ{wW z4PM~k2!g5R!P5mqrH|^H->+474vd7-{|*8s4t5p;M*ofV+7I12QH_p={EtSY^3RgM zX?3}0PdHW}2F5)sNrjgCtls3E9#<0DkH$B9+rNel%|hI1#Z=Y-b%G_2=_jj3_E=pK z|7CQWw`aZ;Hcl8W);mdWH0W_*K*fwt7hZXm{Fw&%XGgU4yTfYA3H4gV_>VRPgDe07%F`2G7d)t(f?d7*0ItCIYqe@9fFyN+oB zA8R<_H%`#27{S_BvdiK8qL5X;&V+Le`N;|Qy2^P~8I}Y7yyZ&ZHpq*kZcO$`a7(?A z2~bPNV5{Z`3b?xd5!4v?Eo?e+vvW)OYdr@zXFyDImx4{|D-sLQ{xxfSxEzZVE+;H!bc42K8bIXwfc?-CI8e|XmOe9@SPt9C!)bgeHDePnSy(SMW7fqBZ(Z=vh5-cZyZoZ(dN8n_@~84|J=3=qtFw1zRNhMR5`C}p;{ek*L?ebd!2ug~cg(#WxH1N@Fx~m!sYh+4oA%Nj z%Kz_jI(tH>Rb{6ek9wzy2N#70-+s6CpFg4`Q8YYX6Da62ZzW_3YNyL&N(1BVcth3v zjVt7g2Jne812Lv5m*!HR&`EvOdP{CC;$I%`6f(EpF+a9)$7J7SSH!f96zW1)1F*=2 zRG-YRJfuOE3Juh&A`2`_#@wrcOGuF0dPQl?lEo&e$|8qDx2qf(6CL4H({K~}1Cqmp z3)KA<79>)=Am#IWUSQfS4oL&qrwiQ%xEglzbQ3Nx8vmnl=KXfA8s~|oVbmvvn`C^w zl{&CA#Ln}wl4;Kx+UuNS^}#!QmLhbk6Hy+oPP-x1b#QcABdO5uByDbT&1m;%{Bl%a zz<=LF28?fSc=o>Sr&i<(mM1ALL!5QVDug}Zgtok;X9noX#8&Tfp}Cq8;zMTm=s?$X z6Ghb7-#eo-E2C0oeq7EoojM<{&%Bpv3+Tw5*>gU7DM{yg@)-;&$1(T%w+!x%jeOw@ zH9rD(8e~utH;2{8G&^i3Q~STqHm_{Kw56 z+ux82g-Bh`O3uv&;{cFF3G7kbY!S<6r3pv2^n7@`T z{45)4BL(WSxw=P$1ZVzuVz(SE5PmtkEX4N-4@3!l_(_@X zrPeG(FOtoNIBw7pbZ}%}%C9vd4cR`ghAnGaXoU!OUr;5!{eLw)HeZoY zk3TW3b%?MPRWYfd&-eRvWI(!tjKF;d;ZU83`2~-ng}qdRBL|T$HpA|IkUo|;?CgF{ z@N-jMJ%x9+Gcyn7{z1p;W#&y}km>wo$h781|?}S2A3zcFF(A0WkYRX$Ed$%O2hgg@-5Tg zLL?0Y`T%&kSGYnLqCO&}*VZ)BQtZPtr#7DZ({5qz*`U7%Sp9_%0~&t2$v`93@=LNj zlNBu@3r%0nrsJj#2MMk%G)cLMB*fL{vLWW9mNQ@8?iea?PGOQ&#uz&;UKk8snLefP z(|;reXecF_^Wr2C4UG(@78YzpEp_FmDxeSd^tG*q;%6VX@mzAaC1!bu2V6|9#`QW& ze98|X!xQ~%c&qGG#o9nS?OtACuV9l^RU5RUK-mEWDJK(z(379~@T!@SZ|2|7E;Ff1 z+azR#80!XPIwcZmds37*WYuaDP zlE)q5w!306zsGYLeZk$0>q=-EK)Ku~Q}}M+ZzU)bPgNz%?429szCU&{0w6NQ@6m^- zeQiXi)iL`R!QyfQ=%+(G0o4U~|L#zB0LzmSh4b%MUW{BOj!p1e#XtoIzwLQ{>r7&^;vKrIehR`=ActmN6W2`4D2+c34Nz+taRX~+Z zE1KdRpb$3z8Y6RVwFet7^+Z7u#Ww@WJqB&&uLAJn8OPM=l zlbLKmwvfsS&9OUHA>yYhNZK(lL6)kI4Zi3H_heG}lb}z8`K{@mV?v@?YBpWmWTS+w zvb>p$G}W}1<6yV^d%)r*A%+8qU4utKbOup4tt`br0s-|~&r4d&{>)=W0HFoBt{x7wg_1?qAo$rn+7!#xe2x-<}I zt_HEVzSrxa;=TT(+zvU)0h;F?<14w@nPBncR74=G_K-7XVrDZqbil5?+pRp`tVJ!hala$%^}5yNDdckQ-PS- znL2x#*VwZfo#gT>5wjp^$5Hi=8gPbZ!-o7E-+e>ECAM>E(h)`cG`M%RR{7DwK5s0= zYdMJYCVMLeZCTk0LhO$|xKR?VZtf$xe$~(;3H}RF(eGYUy}cmF6B&s=_3GQaE0Xxc zJ5~jB!IC5jCh*D(`QHz#X?n@D=9x!WwdPGO@6ya|0bRW2+BC;|KM|@_MvVXa@V)tM z#dw))XXRA>_mD5S1HUWDZ{s7Ny^fxTaN3k4_%f6n#WkJ#u%V)zx`mCRETK~B5;N!( z(B~D>hfd3btiIQ1^Lt4C3#BF2bYcv0T>uC3>4PYWS^A&iges%-gs;VpOKT*slH9QL zozRRQx3|7&wi+7g|cxy-R?yT zy5f^k!4dz1MA@4R1X#6^EUA_Dd2CunGI zdJ8KNGWRd`Yo~bk^K}-8$U47G!Jn~Op#`x!;5ax^n_oaEXUG0wY3O@NUH4=v|7!n= zu_#7+IXRr~&v~a%hvrP)#P8r+w-PGTi>6F1aG5;o%gywt&mEKzPXGD!Qm+f7$bf3~ zV`v>BN%6TVa8whK`Cg?}La~Wt*vHlrFmkr++5YfKV2$jpSJ*>u_GyP_HU-L$%%UI1 zau5UZLqM1Ix2~FSr9$WasNWyKTYi23EXjYHx4WyJUc*z_n_kPipte;j7pIQS2f7&u zDt~PS`C`R@a;)q21Oq#KNd$LH2%m03Koa=qc}IdO^NmdoLTGgXYZ2R6vV5P+utOyc zy)#n{&PP(CoZ9`ZSxdYwpG4n`PM* zK&8X?6?5z|Qlr%T;(KYy)X)lZ@4&6PK#acmXWij}*=uI^xu&x;D^>5%)oz5S{Vnln zxz6a-dA3#T*)8bRFgz-6Bc;`^wA)`SFv)sWny=@T>ymOt0GMrJXLSkANjZZJj1C

t0m_X|ndjUuNkfgKt^!ml3^9iIn}(vXR|{Pp@7OlZew62Lry%WJ zPI?2SzJ(o@bp-Wx30SH(SR46Ok-{MX>W81uCpwR|UZAP$x9Sy3Gj16L_K4}F0900M z5$p-Ck}pWwUTrFa4VW=>XxG&4@pfmRpKx#C!2^JCF-~_uy9(1urBy2*kQnghH$sq1uAU`B$N>~`hEPR$yNI&nqhlR-c($=3mn z>_qbNTrHDdjV|}(J(cQ+XXytEx>6)C7Lqq6l{v2$y4BFzY92}sgvl83jUCwyehc#f zX4m6jygTs24?iGu(FonT6wBEESYEpY!0$FLxn=Y_#j^5^U(F8yTTlfF)e7$kv5jw= zAnzq)A|mOxk>c>b_pM#3kcJaHp{tg%!`*P3zH61%~t>wTR~hzvM; zYb|KLEOi897)qIGNlWb!u>9zCwY!%+^&1Fvlhg|XZVTfdmzBvEPWz!HQ2 zL^)VS4YKLYvc1*@T_eWD*-pOO59iwEZgl-VzXwTF?8fnWRegDfVCthcvos?(X`4a((#9b+ZfH&vD$-q|NG3u1+g1Qt=_I&JKOA z;k#E{?@3@aIvScH z`ozfY=f%?kcz6&fL!xzXt^G(!h-h{Y^9^V<>xn(P?@8eN6p4-b3sf_pWfCRP%)3xE z=6Oym%ms))3=6t%-ux+Sc)pK=t{5SqB3W1cmB4{C%LP>v-<)XVINto&mdLPfIRGJB z$RCPr*61Q6`oYELPlS7H`r1^y93`VNRn~75-Tbmr+f?^*HVEnanG@B^9bp1KJ+KSh z1!|fKb0%ad7`@doD6`A1g#G zV<^aqR*bXrXzuEhuHY6xb|Ibb4aWw(3iuJE)yy(1w;6yh1ik|VeqJ)Rrk6WDX3frycf`& z=XJV04D`?SQDXpN*HQ%XA8K1mLGlb&g9wVvp(2Tm*c;<*LAZzEd-~40id}+C@Fr$W z7$EB=ou4}9%WtKj4;cg1p7WZfzOR+mi`s0?L@gQGBBhgjm5*gY6NJ;qUQ|hiiR7{| zrS1$?e2<}Q;GPwWCBYNe4o*+2>#Bx3<@>@RTeXRxwVK6VV351yd8D=RpeL707wY;= zRKtB8`9!bLks6x7%1I6foO48b-l0I_f$uAMW~v}8wbf`s7hFlk{-c6EsyLIYa*VH- z#39)UT&q*hguA9sZ4>7z(m-Ww7EPrQz5^g9$-xRcCSDNFCp3BY;t^J$&7Ahp0_(qwf1@S{vy0rc%;yPDpU6Ktvxpv8q3&?95u?E>6tzsD(di! z0Oi--d8@wFel3Fd^d{=!a134#<3ywX1B4te`@XrEtf~7_@Fl-_GtjW0arJ~}^p=G= za;3l3W+X}I@WV7Bd&VkHz8mn#v#mq^Ggnh2q5}0#l~%PM7phRKV%)AdR+%802llk{ zB5D{}e6LbiO7_#&fB~Pc_D`M7Rg20vZ~JNLMFN-amRt<83|P3nIE|&>C`f*!9b4#@6b2@05kKZC+l_9cNerj#ZX|zR~NoTz=qej%a*=w zx+I>dQ!=2+t9;G&&kqUlC_ge98}?u|e8Trac=v&) zzb&E-*^$^Fp`uRTnZ|aY=e@hAa@KgxM8$>9_1AS1J&@c@AEHaA`$h*MO=I{Pvue4X z!dBXG!^4Lw6I_1saO6buRDGUQBv#rtz|aKfEDlD;tG`#yi*)k53-T4N({K zx*l(9O=v_rup^(*`FU&}x)I`z2a>|@AuFws{ld>z)lHP`_?FI?4^;(qy>;bT+4X>f z>y*1DiUobm#U07j;ae>-&&At?P2)$u4g30l7Wyl~zP|QyXe|9Y8W~{kE_mY3&?<;G zyGu`-GT9;#?{NtZ8VPr>wl-EY+QR^(bCyv&*7 zUd6;4-_<9&;6^vEfNb@D?%5vZHS3oN=%hi@^d{|-nXd3nCOxB~OIloM(D+b6L~7v9 zqVo*Sp7c+S{cRBUT4PbCTz9p(RN~iOj}jLc>(11E1Q&jGa({0#y;Q=Y!nXqTw4A?DXhk_Ys4UeEIi)I_{gaEs|VC@F3?;oaEV>4`7 z$R~h9l#`=O?Xw8T_lvcXY(gx9z4 zQeh_}0RH16L=m-3c@V#gDvq)1oEd)n)~vn#epGkNO#N0PZ}lP_z5{Fu&ZcAxW$+N| zxZjyon`9D@f+O|@WI?}34^$69swTE) zdnCC-4~85!P$O((xZt1XU2ZLJ)A4JanP^H;Qo`pczg*c^q=}5FS5aaB?9Z3XCeKp; z3S9!&y95H2k+&EW=?A4xx&-zH>B!{=S@*K1e3W^f>{Gey)!wO6J=gC%m}ldqrMHbL zr^*n8@AYr@Bkkn%^UPt!=>;|P0H}G7#t)RCup|x|rkFI-UVN)?&9aeRoMQz=z@f4^`(2@>2_Kt0`ZdB=2PW zeLAS{`CN6Ye$)H*Ds_^jS=yM;+DXjd8}1Nz-?F|!V)lvZA9At?Fnn<2V0W;a==C^r z!?~`j9Gd`|9(H4?(-7Kfy&x>y>HenANMg2(Z_={id{qNJ1n->5RP>)!z=K(}oKde5 zm>BUXHr9%%3h9AQ+v-L7ht#$;_ZBtiYr5U57GJ!%ZlV@A7XIBE7WNegEr7k!?izD2 zts#bGUn-TwSCuu3?MA}bo#g`+(fq}}?oc(Gk-sjJM2QSN=5E0@n4kDFT3IG41oep8 zX7<*Frpdu^n8OSn;-g}klQeuedwk$^|NIzjKiYq3o$%T6vQa{6cP-~z->y)nV>Nv1 zXr$#f&w-h})k3iW7@yCfviHo!ZmD0OzWur(XhPs7yt&3XKMd{al9}gF$XJ8CXFwDQ07Q!n3z#%H3m87@p)r%; z#WDt)SE$DjzkEGCF4p;%!7KJIu&-y3WO1z;bp9!UnKC7W`o$x*2IihO6gGUa< z3r7hfRlgmWUN8|~HWRFe1-lc?j_Do^>}n#;G>TO+bP?3k=`1^r?I`K5GS|(rWQ&Rx z;z*Mp1Gc{%M+;v)SUJuh}+J5^!q>vQWPrpROF9b^5zKNzv^X zKmyL}`$~91rJ!b5y0U`4j$n=~p(0Z5BZ{x+kV1hiY;;Thr$D;J@x#XhG7mipWm4fs zh(Ae&Efn7>Wf2Kd*jl@wvO}}>mNUm$jRpqV{x*Sz<{zlAWc0k+Z_zR_V5O5AC%)s6 zidp)LdLJe;bnKf8596w7G;hA4DCO9-kvLy-ozkc(ch%oN{=06(o>%W7ODeD7E--8Q z)3EQ8{}g@-W$do*&6cT@H4w-0Mry6Vr#LBsb1=yiz~98`o;dBLUI7z0-7#*Vb?LI} zII%Xd5$&vykf^($;ADK}NgRg8_L~GSBTujYO3TVrOK?o(HI zo#Eg&LaW_!dWzxs+lL(BWHg0AzW*b9cdBmN-t*fW#mR=?#YBss-lO3RO=(zi^fqFrGA)7pO#3eX9Botll_L2HM335>jJ{);~>^=kId^X!Xb<=h8oQDpH$kEE0#OS z2+rRrh&J(h7N-H37X#cG6g4*>+;{{qHn5i#NL!(Tp1bJOw*s%iDjk0embE-zscaAF z^++L0d)esIoR~MPLOr&LuuM05rf@!rSFrBV=H+;oOy-@|2I=?BLissW#ugTLL}{rL z%=bL1PATpGm6s|f?Ahk-Mo@KNHAKB(cNMR1_69v%sv!~L9N={Xy*> zgUMu;9D;WhQgv|P@Zc;*WehYskGL+}fwX_b^-r^MoRwy)@Js6iZ-{OYs5Z~@AW5`MsIWXIgzeM0YCu60TJ$CobC6~GDJVQHP8taoqo>7VVBijOI{ z|Iu_r%G_O-Okga%LGSQD7yq+CkeC{-UqW0TN(C+xLhEw zSlDGgJkMvda>&7R2bR9P>uND)Y0aymL1DLuWdoP1$E2-%bTG8~=j5Ljd2Pa|ISC$^ z%HU|Y2NA!@Gm6M->0G!vfPb&$UYOzi#8ZDIxNgEYIM|V|E7PJyc+YBL*Q;xT)zU{{ z2wcH)c3M3*fm{}1vwbNezOLT+rs;)?p32}K#0O%>ioSRx;&tZAb(Q4pKc0iYC%f$p zHsEye#-$U_b%c5O#Xmvi5Y5#RnGAUM|aX}vnL zO$g6A-%s*PMbn73;KP1=*|C$oS;~&+$MS^>JLuJ?PGjgmOgQVO>i`E{IRUQ^ws zyE)dZ6W!7a`jj?V`>Kol^p5Jr%*({B&KWtY&IwjDUmahvSDTjC?pb*TxfqezwT>a& z7AphS^A$xQ0IlN(PPDi8;POj>TlG1Q1f{tkDy45MQr)2q^ed(8HqnR-)_`t;hrqUK zwWm&hpv-cvs4Ts)2TA7Bu^MHS{frzOQeKLVW!Ub&GUTbsr;zhrc{hd~m|f^kRy-w7hA4g# zu=wmw@Tz*;QWmCxG{V-nxHG4pR~|3^m?WM%PJL%%@wp$E1}{csF2D9FzYSV6;{IwG zHKGZu2Q^abgM!94`Ia!HGwYgc!5`hvD-W26K79S+-?P5?)qf%(ttJ<51T2sM2eXq6 zE=}effO(d44a}T6AxSNB>MtgrC%F8qy2!>E!oBqR3hEG2BRIzURnfzV|q!n^KoH<4ta<;=h0Ta@R)uUj|O1m3J`_ z*$?1(L)E_Rj0j^gD)xqmTZIjXvW6Bh&_b6uZ85T4Xu5Y{Oq{3BA2A+y!HsN*y~-mp zoAf3CPJ%r?QW%&BM!(?IoPEr)ZtBqSIt?O%dbD~yz)r5WLFYoCLKT1glMOo~Bap#n zY2}}L(Ra_8NezOgIZs7Ab>%;tU8k{42#GRpd|XCyvR&+>7YMK&uWU^McXEUIG-Z)D z4b}zLDr5`aUZFNM4}C~wqsmXIz`6HTFLkXgx2GU;Z6%4VmzJoUZJb^)jmvpi-w-vZ zWkB?~t7@H9P7n_gqp_p`LRyN&F+;{y`#4?){Xo6(4YyZGygUSXA=>^uGllC2trv>8 zNh2HHm?%e28udOl51xhW=Znyi#1P|iV5TZgZ_MJ-;(JM8X}s!@sS)RqU68~TT66&c z#{W(jTp*|j?Rf3VT8x4jbQ&7DHtRGZmEI@DlK71$osPAEV+8*h?n!Cc;R0>@nDeg8 zU9OkQY+-Ylv|zM@#ZLW*rbHMev1vk4J9v@0zJ&<~MJO7b+}yLdcR#dWV^%TX_aKMY zdNISuB0RtEZX*fvEZ8og+uz*5x3vBC+Etb-ZjzHN^1khcjA=to!)Xg`W#IG`yfe8N z)oW&~yRhB3lT|qJR)T=}0S%x)|<%(D^7@=6FBs9I)?-G6h^o${EG+ ztX3M5WTS%ivTpWPJnhzrMWSKMht@es=7@O>$EIGK@3jV2XJXh5sRcv9w%OAaMr5YY zjm?I7{fnN@Twdm6;8c)mmSXC0`)&5QE~P(z8cFTub^Q9ni!&s#O}Qu%bE20^a>YR9 zg~(}Hto&r<=Q~qvk_tEHqPSw(+=_cu9IqpFlXHCz9f0C-aXY=DJz~K-6p8^k6-K>f zx7O~eI=Gvu##Nz=ZSB+z(IM%IK>O*4+?GBiW#s(yohyz9EZUND6Qk!If;^2IrG$TO z{sR|%YYaBOpQ73yyRavew_JReCa3D@dqY&pd{`my6jI65TxXWKd)iD5;gE~IT_Xw< zliD7A)Ln*eW}0jWT)hdH8yOQ&=Ra(P+aiXjUAdDX~xJ(#VEPFWY54@@nttbE0gbg_V}fVs`PXHn9ODZr=eliqk0aQEY(Wcq;^!cycyZ9 z>9%H&?8oKGykoE2W%i70->bgH=I<2KC-92NC9~22BHbXoQmZ|&cX=%FY#Pkg5XWgI zl|4Jk>~-=x`ejdV5X_>2r&>>69lv}3hnHmcx*JXuYjh&)C9Dea)Y-xtQC49k#FVdw zaK@Kqpl4V!RqvVLlYHVg9W^0AugtW&H^(8t&&Rkb^`kO4yLmuUTwy1f@w#NoFvg|d z6f!zlCdZyFNLOsILKX1N4d3>oSL4_~G$oOdruuW(jS!Qq2s)+_FLcszzS{H!O+QFC zTJ^lTC0`D)o07XFY|*c6<>tnQc1at<`5Ft!Ck9w0-rp_*e6wh1J#J|>^WQ@#@TTf% z+&t}9TE&Uk<_An>lreWXx+D@=8&a@$qF&H=eU{1+>q!# zfii&QlKp+xd^J;ncH=*%CP@c%fjgi=UaA>_)jA=lVkB{}9k zH|EHFYzT8pg{bDrF~`gh!e;LK=uqyPZEneZD_5oZe82k#_S5#-`}KN0pO5Dpg}w2y z4l|*ILM4)`I=dJo_#M|jD`W7U^9|nLQ!SK*?cARvL)bEt( zrox^`_G2<4bBk*a=z0(v@)z0Ry?tx0QS{h@)cYLK ziOZ=9l{mObVY)+@F#9irmHQuu7~ZQTagV}2Qq zDTjZ`rNyl@+9@YvlrGs1??ErQVJ2kqvE~q~sCBV2 zqp$Ex&}v8NArsqeQ(Rfuj@g~A;x$~V;ZdHC=$mEZr8AoyJ#NSITug`P(Te!e!8?PL z)W`&nSD3Q9KKre{QPFFSZHjdej;SA2o_<#DbME)KLYd;tBoom=K4zaDEJsQP8Ct8aYKa zbhZ2IiG@q6_Y2foQty=HA9w2 z`@?xzOE^Z60Hyv4l?v#A$#i_c!$D?z%|bY%SJ0imCPyq|*mKG%{CyT^z?2PO6sv_R zhgZCjVr>NZ&z6RG9=wfaQ;s}liB~`$79p)sIG9xJ|1Un0SroSkd>#94x7kD} z{JT~-Y0sa5eY!Fy7Xe_N?LH~aaq3&jn%)2x13nlpw`uzvxpQjaT>Jt@Sd7w2d~kb| zOo1scujdfJOWyO%6n@QLmF^+h;v*B?Gxf2$VJdsip*v1tkCg*6Vxg25RJPD6>F)Ze zQcHyeV$Mrue5rDr;34|_*?(^)9AS)Q?|l?w_vc24^+T@CH3?sa}wL37@q3Rh8f; zc{gg|@xIy|d7}5q7xtB^6sFaTok_4ix?wiJbRR7v60+FK7*bn0+4iX)j5gfD-t@8eJCR5NJyTVV7c)ii=z8fq@E_QNJ+8l62&TRny$3Z3 z+Hq@0aOJr}Qhn2GWlI(j!;UBUC#|;-WJW!~4!Dj)?8gwW*Ra#O+DjtwNNX82YRlUd zi(|c2rLbYtrSED}QmqzAlSyB$D%rNd>Pg^vc$v*6Seg12-a$C2@v6R&%TN8m(Tb$La-*k zjog0d)joNkzAK1*(Kw89?Z1&=*G3r)^V zy`8Lc>L0$`$!j9Eu``~zI4gjeOVQ)FFAUjojGIf^09$vD=!THW(li8#y;AhT0*Zm` zeW)=1rjy8)1q*Yd&)zM2!suld*`!yylS6Fuws!Bo@7NkGQWW*j@38X>3k^aRg-4Cr zvn9Y573$|_RLIKAn%kf#O|11%52@%it6{K{azYM2-xO$L%Et;a81-~f^TFt21`jCtx71BRH`CRk(bFD{FgKBxkgD@h zCRGd%L{zW>yWwc?6Rmr4`OqWXExDH}t^GT{$I55^Yb>uh)OPauPn!+Dzo8#@60xZ$ zrv`6vA?A=^d|L!}T7lF_RfO`)=7c47y6FX@4%Og63NEi9;Q&437hDSXP$_y z*nzzPa(p3J8Z?VH@VXv!Tf4;3tM|pvqO3iIwKaDhj@Ui;BigchWS{j@%v+C{cN-+; zsct>cs$7zxJCXTKma`4IV$q|7g}Jj`cp5U~UIEzvD;hJZzOrY~7`kl}4PRS0nK4h5 z+9QDV%mPs1p$F=u%Jk`BLrXk$D*n1&P&l}lqt2jJFxkBi;mq7<8@p9}3!QFgqCzaA zmaI|@w|U+?b#s#Wo}RuNZKE+jKz7d6?x#61v4n(XGsLMwHSG6WeCtw1 zs^{DGwD!_HT+uyWoR72G3XEP1wGtdFbB|>y>+4MP?~fx7r{!pw^1e2|PxO+m^nunr z9z3BN{DHU@4Tg?Bl=0~}a_G(?UoXFe+6p`0TIHi>5sK<{_u>PUVc7qjQo_BGHWJiT za33X;GDmB_+sE!_I^W3J9aR2$YLgkGaYGQM}zHW?H zk-!}*&G;@@#ZD?kVXLfHL&y&t&PScmWX#npeH1fSo7@Xe4)lV2%wvesnh}Kw$MbVv@tGeevmEtPOy-)t5FhWB43n67}ik6U4nc zbags-xJMuP-A%W-;$-p*;{c*=L2`~GHd2I2cn?8c!-KKU_#mSOA>hS*z#MP4mCx%DR81P@ zQ<08#Tgso!;FyYJeD@#iRKXn!aReYQP7nJwGUU2^#i#E3=J;?2_N+9YI=c3O0Z@oa zpg$>}SS@iYRjy%%7K1O8SC)Z&uJurc+)qf8rX4Z1mF=e5<#=$3{7M zixKoS7|z53|CcA3Had!FA<`C1lk%vCWLM{`q|MUyTWV9cLR9t>NR6M}Xl676osYeh=%lV>4lQ2>_beXnM*BQ1BXL(g-l@f z4;l(o!Gys*q^~yVg=c$F?FtRnWYKf6f1RvR!joz^<}zxEBaCMh81BZm5j8!;8${=4 zSc@Y#G^F`h@q=lOz$uLxsBKB_n6>SlWZR3{e}R2Yf1^QB)8AHu=DPxkEdT>T$~=7K z9ZcLt^%bYS;bv0Wx=pFvOLciy`FrfW>5{kF1b&X7$!U6#@Q1Ymj7;D+hU>ld$d+`o zokplkPP%rF>lyM@Lz0%wMoKg}csfh`P*chLU)IB3UO`QAr}fLB-##u1s$nL&r%JO6 zb_gk0PaqNXu^C~!$MjQ@qGIjp_PYj3CW}YqYX6fqw5+R_%Lh6fT4L>G{m8W=quxPG zOsAt1!=`0XRm|Bbg>G}_ez}~@0FbmA^B=~V)Ia0UWeW_z;1MXgeJ-lBz9F@<2fdS; zAS#Kq&Uh>yIM4rE?woMuW2PX`*4;}+ZkIu_({LuC=;$AhG>N*SY*OT%dc%z^0hT*v zs`2{nxJk<=?Pmorr=2k${0sRSbqDUWF}KE0mDz4Wx8C2lN$`@B=QS)_t7h|b1jc$*)Xg>$UaJQw2jY& ztM$596WafB>&Cvv|mq=7397ofhL+B`fiuqdRU>{&)ctwmOg<{_j*j6Q8!T&f~|d9 zrgaUfw-r_vtJ9E1}(y)5f31GND#5%_pNg@&j&(rC@cHNyC3~Pq@o`6bAzm6>&n0Fy;9wh7vok4WrBn0+$}!5k6>#SQ83pWg)L)lqIPv1ylG>VVuq(rKMg|ZdCjt+T#MQBS4Ox> zjZmAj3fZ8G8w%<7Hw3I-D{VkWBB??a8dfjd-Dc}ilE#8Ie!GdRdamj=uhymJ`6~|h zG%yzRSHH%)E)!o`dr9qJNRHary&V?B9@gG5Dd)wzirZBWgcj1Z=k7g}{kInnU5> z6uz$|E_|c$aTAoJtAq!$W#^#zn%9VkE?S#l$45JI=uN8og9@E83#` zQ^y0lk&x3J*Nl1_Uw7I>?t#(T(sy7b5^q4MFSWJQz2HhH7AsY>Z==q=G|xrwRh1c1 z3%|Zxn#%i@4G!h%Q0n$jvq(qHp^ewmAy*PM)S~E9>}>vTsa~`HzMrcHe!? z`3|D`ReecJ*9IJgNDmMe8ufR=jcsIXEC!EcJV21u{-u9_pxCtc_5MXqLM zwh0YM4+sYDYfJzB9}~ahA8oJ*Q&1EQN^oX}IepG(To?$uNxmI9{NLDx6b_4y3pJ2Y z0%{?1sq10reY4s{0v(kr72xqFdo!E;_u(4~Ni7CELJ%iq5NgTIHuyDvkX8uG8vrM7XY z4)i2TXZAIbmVSzE9$-|>cel(=(?2BUuwktSO-$J!z#A|k2M+0R`lal(*;YX^Hs3+# z#3=@A!x%$Zp%)U#SJ)$|?Eg?Mw)LgTX0!SDtM2%`$ACPrf%Zv7Y~148OO`Ay=9W$m zmldoo2xZbPU^|}E{qjn%Pt7$+s?DrTG-#Q|6KhP}0@y7#Dug*5nD{^w^tPoTA>2vY zjWb1l;InXQ)e}t z*V|t^Fa5An)a?$NB(F!<1nks)>2R>&5sI90{_a`7IGqwXRm4wjU8a71-zztE&bs8j zK43yaCYpRF!>4N6^q(1!0t!}m_;97LsHi83{+daE8n<4R5*iRC)u~39yT6MHZtxXY zZfjZM-7*+YO2cZlPvhdSG{RW3Ig|o%yx+rkvybW+U(~&ZqnCCGq&|FP8FUdmKBuzA z^k2xx+w@lO81m}PYSa;FH!9rg;I5*2yZ@!ii+f+g7FWQt16L9m%W8Av0N}Q43ckU0 z<7xa|nPb4HBQkyv;atc=jIHXp3?xD*Vs@XZzid>zuyLMpdWn5|Z8v($7@`RpU!7Ri zmwc>A%KZMY#T9zK(|fsC@~sv;!u{LLA=)Iw#zr$5HSy)rj`fm0W&8 zxvvP-1gd=0z@i?ugtW2-umVE@*fdQZSbz8V7^GcRC^0E3{^bXe#hy*3BMI*96lqib z-vM#}7OW;cVy{&8Qc8_VQILdIMSJ*$Etm34iM`v8;{I~yde%!L0WubCdQQNNh)ZqR zV^fYb)n27*4LdMkOZ|d>Rh^#~3t;CHep|;7(Qi^+wHXMtiCq65eH$3=xG_YongZ^4 z>5IMVda@#)ZLd)O!-{|iUTk`>WFbT9=m65s=bN+rYQ$ao&fBI_ae{GM(;fn6typK zD8L}n6DXs_Z!O{cxEzqAc}>dQU?nkO87em zNHXlWI;R+zS?1lYUf}1H&rkiTY-JLn<@m$w6owdn^3>zF2cEof@ZCF5X_u%gk#(yqDcFcv*iZF)P#MIwgd1g-wZY>qdq%9iY~@#vqegBQTwWxn-exBm#~m4U{& zUU15Vamz6ibIURmUHu02~XYh7C?plIZ4M`FCUc0{stqb2ny9XIv z-0EiZG5G#XdZ1v!#AyAKVK2RJ8D3~#E55=IEy`{Q*?*?4qo$hO)CE}}@gppD!TlHR ziXW3~Kaow>ucgW*Kj}Z8B=BPkA@(9JYg3I2=`NkE!DIjC-9CFpjIDKk+SmBc6^&&@ z{#F71g(@-pabC-d8X0d?J(OB=r{V||_dVtWE%|)yKT58(GGDo(TZv~9L7wvxHt{-t1R4Bef6ce z;Zto#=6kIh`*d*E*+viq;PvLP>QF9%nQ}iy*m9Id|Rqi%x6# z{yCD|FLByULd;3!QQ#T=kDh~WbukXRwbX{4Rdg5Lg zj+1VGp8$1&g86wyhmjn7qlT4k5RD^xn>8*~&OAMe`$tx{xa=?;4t| z^72Ali{t+RQzoJUkzei#2uuLX)#(FpNSRUYeo|0J40a?9qOk=3A+Q=`Vj12qiQP;} zRiWG}#>;>EG%7?*xLV0{VDG6}2K~zdckl1N5Q(tNi#EGq>rLLG42Z}>x9=gn?d%IO zxk`P7W%T(fhHNcjCW>d#wWQCEj;ijiyxCz38(WCI+;7i1lTLa|?WgCXeGc_npyimh zdbNtNfNaI_>a?$AuVj~Xr)}$!FcWodEiE1S)>rCPwH;m1!HM^Noxxf?3O{Aea#UoPE)#Jb+EO6EUcMK?tfy(b z-O}TeogJZcB&Ax)LnJyH?LRUsY%FJLCQhfws!GtRz^0cLL?EP_ia9Hu%n)*AQD!PK zb-=M@51XNn8G79DpayWn^jW~K3iPFk-*1RRT-Ro@u^qux)5!$fF}&{)?kcD)0sJKmjJ|x3Xo|eq z`Md;<6Y>`ZdZ%09Qy(+KnHf4e)~7F8^SoaO*Zf!`@ux`;)qhsgOrNu8s1-Lp_S-^7 zNKuJ8rL~tW&ZK0oP~2AuTc!G(gY>O;Z1#f|7Kp1$tHmB3V|^EnEE7IecqSF6;a|Cd z>wL(Bd5SvEssW5^H`E>Bh z=Dw+PkoL*Dv0~88lrf*y(FyXwX&JM{fPaaeJ}L>D-=f?Vgz{C#1gX%Cd#;`lJwQ%-9vLYi8MoLWsp#oG_=s6&Bxm2$Ej;LJqKr zkDW4ixqE=7$F@-HM>l{lRHDGDB;tCmMY}t%WaquhNrCVuHR_fO%=$=tP}(c*3B0HP z{B^e~Yhk-+MUq=7LV?S0Tr9?-?sjC}4I7J;mjH^7u-)~VK34Lp1V!mh)&Les&s>YP zbT7J)fW3X*L+^lFzY@?jEzK>wEVbD01+2p|VfLy_7gwLfN6Y5mzpA&Mf6sN3&9oiS zw)wO^n`To}8(Kf}H$_W*Mn~EABJ&5-Y9pe#`G{}kezs&Bb;<^V5io?A-#@N;uz!m~ zk2b5@GZsoX`ekEjl&gYw^abuaq)3;^WoukpeykV<9R+L1j)KcDrJrvRpjw%uK(Mjj zDh7W>lWHN~F8HH{4O(AZf3nM)#7?>%Gi)aZT`rQj$KK$+7loIfZ@cS&ZRXe=1meU6 z=<*?((s1*97B?x~uM27}a1Z>^9L7&FcS9g^L-11mm+AUcaje(OFi)e3>h-X8grFCSortSdo41xonG?M8qZ z&@$a(Gi(~K^sr~dXL^hz7@=?)q0GUIK!2`23FpDx&v<=l26a5c>?dn!;~3<8dam>3QV zp8UA(VU!CCbMmmywR(&!Oqb?maD2Cqaxbz8r!ii`^7&>Gosuko*2D2HhLv*`bvqbx zV-kQ(u$7YOddnY8Y;Fxv*HgfLef{j!33$Uqy}iKfWhOFJ?w@Hc)MD6}SE?#P5|m~z z$uojZooO2Nn(MwZKkE~y2MXT1cZwx*`fA3j-_?JR?3rFL=6Ss(n?*0uFpc*#F zZ?AsA&NBkWxBW0}?R|HW3eON6)|1nx0rfBFYv)?{J9*w{m#K+p*dY8Ghf7k{!aGM| zpPQpQ^hx_85xp|d4~W52B6PF z^*|=K0sT_-V=pGb3BUjl_!hA-nEz8TN%qEbfQLT7n7=MLjb7{7*VLdyefWne3Ei?x zD;>P`x;*7#d8(neCMjK{Hknrz&edMJb45<(k+`03O4LslPuL-)d*GV3Wck3l5973|1 z)^RSgLAoJ~K%dRcI5zM!`BBB1(Pckh%LnJJ-NPzobP-;FxAQ$nSp)Xf^_&3(ojx{z zZt2b_pw5Jlo@r5Z@mAA%bK#{}Hsl)Jm@&rZ3^D0w{x^O~qhoIzeasWN|N5{A&}k?GkTG$0=6~aDqKBXiHJM?P7^x< zj^gTqSPfHvi6Hl7qIlmHHu8iqszJr0xUyQ&CnT7_B(Cpw?JujR-&YPRE()j3V=R#$ zOyg6P#7b@9B$QGTbvt6qt|3JG{aX4e_W?YUaIV{mZ`g>)M)4ezmGmwXA58xs|2lk-WO69-9RUG=1t*uPrA4p`}1 zORE=~ia(S22dQjj*2$KoH|y*-en@rapGX@7%RIWz_XJs2^)gemN^K zpGkY;m};i|2<$Lar^FMJ;rRGfmB+QV+O;#Dtv#n8Re8qeo&9GQpDd#m_SL>%P{0Il z#+{PsS7K9XIH1P}iML-^FNHF#@{?@ck46oD(#tlE(v#b+q-iq_kU;W_`<#(BHJq@~ zdjqxa6zipS{*vEvzt7f4($!@d9+->bkJ1)oHM!cw?95Fd@MBd%KLHs;4^tKgR!PZw zxQBUIZ+fPSWnk!^P<$iUUjjcj+FgC#;aU*i2QA0xO9WeV z^$>g~IL}(ZqkoDJPE&zj2WbAarU)e`{R~ne8=^u`#r{o}nqQo$@RZ zJNMEu(fL9&dhlDen9l)HTG}G%2mX-cyw!-lZS`_^NAfB9T^o_YG4K8ZyLt6*F?g*B zb3vG>UG?ei%E$E%{$HV`Z@uQ0evA?BN{jyy6lj^gDAYraE@2GCe2ziGKi99Bm4O#H zE*NHABA(o_tn()}>D}oZyARU{s~j9WwrEiWm{~Qq)aDJa+xqvQ zUv@_5;NAc}-KK<&eeUuz{Aqj`7(UzJCKc4My!$sd(&T}@=Wi0Ns#vkDDw2M4Mk3@2 z);8*Vpm|TF`0tntw+A}I3^Nkp`a}BMuaj0J*2rI5x8D7#hHnD3D;3N6&JfpzTO;XF z!)ZxV>|K*to2Pej;VC1%Pk(N&2rpr~Z|?i+YlMLZB9haNtkNy3IMLqUT&^F#e<^;% zUmr-Pdld;f*33YA4Q;`2SC#1)hpS&1XxpsX-WoOXgv$EBfGl@apLmj=)(zXwP0`~?!9`dYUi5v5;*P~KJsjf8DORDc5?05(>{MkU}XM#lgr?Qg6?eVs&q z`Zrkl?b2~^S|(ZV3}4z4Uc!NYC(fF@LNCtlo0_d!E7R4W@thmEPZsH=s6Q)3uImMv zGtj;@{Rh_Av~GWe6M$nH$78fcV_RYj;E zs&A!c$3(0Ed7nP}hP1SCTt%e+n3ykwT=*{}?&G!=&W)D=N45kq9z88S1DSb=O`F#8n;6J+igEFKYfG^x%<5_-*spDZ504)&4_}Pnk?|{wu_QyKzr7l6TaJ?sdcV*0T&x74ZIb)hDu&TF z0ep^*$IxwQL-U5p40F@nOOqJ!5c#m!Ukjtk>$DGVIi_ z>T`Xhyw`#tBqor6+{aA4D>H?iYDxVta=aYtBq`uxpdo}F8EzcSJmj5bf@+fY_+-T+ zLg(igbt;Sp+NTbCf53w5C+^mbv45ar-*$P+)sn)DgJ`bq`VL(0?6M#XJfTwGx;j4J z_sxoL<9wEjr~r2gx_ENe_=e|Fg~rM>yejY8u#QdM(Bp+-p-bCOV>`E8r9SmHWxBN= zX{iy}0G8L6i>0lJ6>^E~UguLV@Xt~^_>0)u_}scVVY53>6sVquNIqz`v>>tIr5R#6Lo7)b!d+02hFBa%-Z|Lq{OqHV9HC<9@oF5`F1Z z>jcZnLp?GWPop=+GEMJT^f!m-tE-#>yA^Ki#}Y}OnIdV^_vfKiF|uyk`dV*m^6mXY z$3GvTUJ1kWG!>8o#n)F~qAWJZTAFx{ z!M0s@&8^|Fo2NSR-Co6m7>lCF`o?jvlq`Wy@m8T0ZeIyCE{pA}_rJon zu>Rhzzi++$mU^q}YdyVjhLd5{H6V?USzT=%Ex|0G4`~6HHbkceM7>0-cs~D@9UDIS z&0%LjG7At}cv6`Qh9Rfl2Ym_vjrxZ`^Sk=E0H5_QOFt^j-C0%`!`io3_1Z=I-8k(2 zG4EPSR24X}8vA2oZ$E!KXWvYRiok?Kc*&A+Di5OfQof3O%X8Cbi9|a1|>rF-9TS-A@TVeH-39bvX2vH?6 zZ%a=}rqh zL!--cdCX!PBt%SDI56ep2y6QBnDWODZi`?FB%X9zv9NZ2{qi&5_rAn6LlXReXY*3k zxL7}UNTr@{pa%x2R?J2a-GKq;j!E1mwQej4*Gp8}F|mPLP97{>YVtcxO387I#f2>0-%{!8+in^yXrM&Ycq}L3!EBgL&4|=2BC_81996b>Z z-h5*`bH;uc$ZK7?dZINcGd#aliiWf+(O2H<@k%r(RzaZEQVA!vX=!PWcRFXPg~GiA zQyYqM^rE&y207LE8-*D6Oy`z`Bzl6Gg@a|{cGUH?8&%1DePVp%A5DuVqhfDZ9=)#9 z2lPr2DQbCw8jlZ54HlzWSntVOU%34P;$?BwbEs!CH4hiaiMUA?H$sDs?7hb4*Zr zgO_A<$5ennkKggiCr#-}MJT`vLYh!THs~~Bb%Dh|Y@4mkrHhQslP3!<-G|_-3>C(I z5IwSH$L_|gQ(IvJXK?W$%p`VGNamDe#>!xP8XN(;jMp9Fti`QjF^<}=4K&~~<8H!; zqDy4r9h8X}(Kn4s)3YGh%xDX$(QM2)O-&*droXQ@^0vpL9(=UEQi!oAmb3NRf^ENK z8x#*#Fuwf55#Qq70~&&xltB+19jshfO(GgAe50lv^tQ5QVq5ja0#o?;327gew0Q=0)x8&=@^0L}Y zY-o=!zO}bhin&qFwG;mvFchs>vDtA_b``TT3}J$n24&iu3Y=RQHH?g-49nFx zBftR!*Lp7pwrYTjslF&Fi3i^VU4kpB6*@e;5QqIx&(4@XwHuJ`N8+w6s|%x+1cWp! zGiJwDiDg3!yES)9Ewn1gzr?kv`wk(vLrv-!%^<^6@?P6ndofE=sd`uS1*5n7;GafWivqp`_kgTV z#tD|#HTs>$GOSR5dK(k8+*WnP{7u-E6N+r~Oz-eOesTLYx>$h0#F1x;U??`y=Fw_a z#cygqE&T@&NX0yRe1jU9{XKkj;+pkIxe=4v>ghVp_FNyERst^f$!6%!D`pO~0wuBE zKg`d!ZkcvvjhGplh;;YM3hm}cEWh*qxXM5}Y|FFl7>=;2^N-r+8{uT19t!6f2z!>n zMMk25_mp{hmGex)Pe>=%eC~y{mfmvzw;O3w_gO#)_lEn-jkiqCR!HCUBoVtG+Et0m zNIbclJ}q!uk#LbTFtc20-U$h$@!{)Cx(m~Z@l`h0HB?*nj-#J1{q1B4y7b4Q&y4K@gwloSnA9C+?Nk^*R z_ms4or(wB3!9#)7v(Rdn`i4g>#bVXqv@+$O2Sxh4yj5q5^Hp4?pdY)T5+yq(?d0~k z+JCB9&RY|oEt4#t)EfR9RiXvI@+gR~Xkkpf_aQ$tfO0ThznJf~oQjdl?>|y)t{$H2 zTV3u*F}ZZ2@3AI^fXlE+3asFdgLcE}QC3fPZBlQk4Qh5m9}o~4`Tu#-#+1wb_5g;l zrF!>nBYWu`(k`mGGSaovUd#|ldZ#JKkBIc!ig6UFef?6j+|o|qJGaGyz8%U4hztU+X6wyD{^@*DyR$%w@vm)r2PnQ}@V9NMAD@sM)W0g(mW*fDHs3HD0zFpXq3W6qoU+*C5Ze5P7|C<*>HFQ=gUNiTD9 z5fm~*1p9oS=x*3G0Y&V#E^;yb1HEbe6++e?vJ}r@gZ@VE7@Wp;Lo=P}<|7I}GM-N6 zsz!l>gQ?#-NC8;u2nUGR}oVp!tVue+*F>+qc*^RPB3wN``NYc|&ibDX+ z{I-_N1nM;}vFpi`V%Vw7^$@{-mkk4?|By&R(n&Dh(!mO+@sea_33(qK0*_tZE8YXc z6#WgOnPdcYitF&_yZupA;hjemSVw5LnMiY!S%v%azyd?BA*C(z1Gb88kh_Jaq%yc` z18k7QnUBKIiC2Y+Atf_K+EUNwf%fQ*1&d!N+ASq~7(RRMj8-9V__l#smK5{#`qCw~Mx@la zt?ma(8A(>H0!aYW zYB13uh}X&%|7>1?U8CGsre!Y%I{_wTm#8JM%gRLxSLdFyG2{>*7gsU9KgFq$--kK3 zC-n2z@yh8kd!vK#2l&SFUyD*@3f;h_n|w|I(U?bsm2%fw+hox>*rVD%beq?Mhkv;` zAw7y2Yg34w^+?LvnXYKhkg7_67H*?iZLl}U-N$qc%C~|2(Y_G6jJQ_sUKN<~rv)sC zqpD?GEO{oI5HPcM;CQ_*)r-?-n{r?$5YmzkKpk35nEc5OZ9SgnZ*14+K2m7kUpp#~w<89c1B&po;;r9e)L;J5+?mw?S8&x8!WU-h_qxM*=dZiKOgTD3YfolEJ%Ei1 z&~A{d;7_l*6a_dlvz^LM;La5OLxJJ%`rS!c49tM@ewn%V^%tI5Sf-J-Bn{JcOxnkv z)tVo^FV7^(cbn&FLb)vzWVgp}bF6UjrpXukA=R+zU zn3^oi75zvXP_W+V?<#S-z*xk$e>!Dpj672Lp(MI0ghTqVPHfpYDJskdI^|xQOS*C; z%}QBPLrxbXW4-)uu4hj0fZ5dNs8szR1j9b1SKriVyL<-$eT;FsN9lV?|DgxDZvZ~H z#&az}41DxIrdNV2b8Y`)x(cn@y-=#Q*WdiKx^-=REM5a>fyJ7D*Vu)H=AUfXL_f|Z0aSH)2*rrT`rt6NdR(m zH81_P<+5@($Wf=IDY0JQAMj}iwjj8Ud_#!M)_VoycEcDk;dZNSkldNBKrEvO{o?y5 zp#{UV(=a{9p}FULm59}phNmL8#Ma2xK^d)THEaOq4`L@IH$I^Ty4|^9 zpMfOkto;obA0vOCtHF0?wwT$-K1PW+rO6M+`*1pJ;DH;Ioa?v317Z=J1Z^wdr5N%8I- z#^wgb8LreU#8i~Zqe4Iiy~>U_57#2z>$@1dV<*b7RaxcI)wF_<9BbFAR|%0eG1u@Z zXnrXbcRz8G;eu|nKn#U z_NDZI{XRs18tX(eCr+1)_%s-%p`Sr3;%Gw0{KLf_5>H*-YE5O+&{FHaK z{8*{at(d@4nic6Y!V>Q+QNTbA8{WpCehk(tCmPjc=BBsrGoSL%fs+HN%UXA+M6bMb z5dg~_;3|r!Q6`#@k8DVP_+P;r+%u&z zJJQGOq$$PvyA;i;`+&TXVY{umcq%_LKNxP2ERDPy20J2VU_&-JG z;?MN|{$Ynua_C?=goH4QoF?ZSa$4pvV~ix{%^}R0`sA#UGqGlbnVC(_hbSuNki(ow z4s%wHl@8zEe*eMte(bUL>viAH=XGVVd*GhG5U9D{-wnS(2`TIcUjO}+iBJthnJpJG z9jzW&Lo&Ys_@|B8ndqK#Gn^D>EmX(^^SCt+?`)N+lH8ZUx z^aaI%^x)hEY)xHNmuS(5yPo7O827C3V@>Mx4G!ankgFQq7wb7ikEovF9+>xK3B#@I z?qI_;R^e|prrPc~xV&O{DvB=NH!5s)KoDG-$aq>l)N*YtXQ~Xt2gIRRv>{cSOz6m_3k`aIZjVc>`o6veM6>l(Y3n@W$tH z7Y#~KJ-Z{s`Cn*hVK=5>N?eV;aSoc`?#tH6>Gt)W zE%DzME~lj1 zucEMTqov+u_*d7CHo|N+x!`4lUSro&cnIaf@TfAlAC@Nl&EE={u2_93H9rG$)h?xQ zkmHvzCQY0=I$gVwRwhixmw^s-Em131qij}t2D5{s z?He-r=psEVQlgJRt?+Tohluc@s=IA2xaJqNbKhp(X~^P^BASXi_SLaefU7CfYFFTq@gBIPIgSUkS0IRS7i<0y^G1IIZsyJ&HTEi z_A}>0KE+$7_Ab+=t)#25>tafZ@H#l*$|c`*A&Kr!zI{#K`IM!m?|N|vqaO5^!1eU# z;m@)6jL@%1D9AxuebkI#!S`X#w-1Gfixt3}c=yuaLp_6cO$RhF!5ds$x_`HY2Z7S; zM?+EGDM#NVpIp^GjAb$^l6c>pxi|+tRlib2hFt16y7RI=M)dpi!0Y-{*x2msN*+^q zGgf>NN-aj(u?zhe>Cm~p&dyT2c3*Lp;0*t}*z|50LVP;nJXzpM?q8)#-zRNDq&N;t zZ5^~#$II6NrS#1WBtL!`e^u8?O$XY%wp`uI8H5|yubmU32RFX!^OH&=99Jnf)9z69 zB|q@}$76S#!6d_K%0x{7`#}yV{xR$@SNUDGnqHPAMs;Hg^R3>xU^ag&W$5oRu&%)= zL|DvS%_;6_Dda~H{0U1&a?cwtAE?=*F#uXl})y>bB{(zN#zaZ zLOIT~(b-Ojkz3Nm?Do9yjat3fIU*$PrBr@W1Ej}5-GeH2UUC{st%(VpPEpbSt{oCp zN@JTzPdU90lf)h7Al~Q2je8*U>(9+N62;GOlu!zF7SF_v@h|#l|0HWvcIaW zadP2oLu)l17lxuZc%9p}csPDc?(3Gbome3Xa$Vi9lVzFE{#*6i-P0C`Yjg*aL5^7% zT+lEVI$TWI@_`k^%XcEp6+@7>>xml6<_Yt!s9P0KEu zl^tgy>JC7t1RCG(h=wuCyZ}v$bYPb`DLC@h=Mwi3=Lr+><;H=~^+wx=Nh@Qx9MvL$ zHo#|A>`?~K;#u0Oq1F%{R;k*6LK?r9@0;(7ZL=2HS!|k_w-$G?OFd*Oey|Wm+o#5T zVc>>{!xpT_%3I+0#VsaBauGNh8JXZDTo2uP(;;_`%BTY-X?lYPWQ0GF65_DG&?lj?N;Sm&mm@B~>{Hxgkb z(egT9CQ;`@nz!aAf_nUWS3UG#T7|%U4b6~k>5xd~l6otjcBa1a;S1^ImiquXB)bkT{lp)dbwUvs1cZQ}~mjU$p`m$#$y zFBGz5hH$+b>j*fXm+2w$t7<}iwD{)oxZW4u)K@8Sd79)~GQKcd_MjoX*7SW85GBV3 z6yjjCw#2lG=tt@ufA0HmEiw2 ziBUSVf%UxMoG{~=do8-Y!?cD8w;7l(-G55kKu3h0W1f<>j;nMNldVV!4XkPiWr}2; zHF(%-2dmCfq{?rOHpGa7HqJl4?yzSwP7S_|ylZyPf1&sR@`SuHag^ittE$zORDJ2e zYOwuV5$qOcmekV!SQ^J#w@1#8T++N6%O3j=u%#tkS6+8_RQ>%~F0t)bX2PpJtJ-Cc zTuPIl*I1VQpf&&E|E+osnfu@dvDx1$d#JTb`aoNR+@4fJeAKSs^Fw~HQ_M8#kk|A* z!dzzKPQs?L;SCn1O0n)6z>fRo#5 zupJMH_&88WFcwef@bx_yfd;rgLP5sHX7!Re5u)D2yVE@w#2S1tFrvEoD#isLT6;)W z0|HWAuW`U%-M-;v*DbalyFsq1n!~i#Q2{covP<}jHA8N)JVx2=r^_2l34Frf7=A}?P2jS}AHabUl69{FpnhDv z;*B44g?C^mDui(zS218f6~65*SzmbIllo9C1z_bfR@?4cMX#Ff@o^%q>go5eidp`bmIpM{YR@ z+t;nfz^r@e@;w|vj6&yCc7cT7wtd8I_BP4$BM>DMc^mwgh?4LNF_93=up2eu63Ypz61W|0M9q)OVqtK~w{QzI8#`h|a4f@&J+GXV5jlM{|72*O@c(*Qh)yUSqxfF!ka=j^vd7z2l$s1>0 zlo&9wP{Ur~X4X8XOAFVZb4#lW$rTN22T>0L;nyVsfl#t9Rq3D?f7;`uJ$xwLdbW?O>a@CVV=B76rdsQ$osIS}t85 zYqZz&eDcu)#7AdMi$5k^9D&#cG}0MBR!Syl~I6U@QC8MZ=ZE zhb7!O=v7$Np?$Ur)W~b}c~6z-DSUd{o(`m5)ZH!|v~5#DUGSEn8M5kXRF$gmflMUy z!T7=sFs-r{YnXt`bQf6b+3H#M&oW=>1)uHQMecBNz&%!%t5lSWv~{`TsU~od7ryKx zkZ1F3T9boJHP4p45A!Z7qVt2w8G|4DYQ|`Smf@^Zm2d#A3bbUruJ8R^x=C6wawF{v zX1M6asBjWk=9N;Wsg6Ca^V2i{m~_|mEVzc*qbdBlS2H+;nfjw3dST9AHai#^RWKom zm5R@Lpy{{(6&z48;@)v@{~wE~hICL8=i57g1PlduJG%Z@r&%dcNA0@MT)w*YV3Aw* z`vZQR-w6KyE(_m%i#k7*p11x(RU+?Xy#{=F>xGxHI1~A|O^gk!k3Vi@xT&U0Fzlq7 z<~v3o^gw;3FQklJ@So7i{%n8AoCbC z`jtm_pdZx-5qxhWK5eJ-ZQu1MU8$rP=&y4&q1he`Wt8IZrpeydflh&C({d-sdQ=04uOBunvx>h)OT} z`ldfKR)u|Y4tFs4SJGGM_Sa{+2Fq^~YTJL?RauY%Jv&#(G?3F6O*B8|dqP^&@2U8N zp2n$gQ2 z-&a#tnpN!%y8`Lw;w){hLu4r6CwHu?BmlqG%nzOV{wC$!7W_|AbYL`Svg!s!g?F8B zTqXq&I*-eXV88R+HPlgEvZ`{qoI9Gkz^%xj^se?37d#zdZ3%s#D^C`ayKHoU`vsW| zN0}tNi;BHGde7XTq{rGff5I;-3x7)jbKgdSyXsTIg(y1{OT~?Wz_ikFJ%xSFoKW?O zW#yKtKz`9sCNYzDTu2K0o8KmBU~Ji`P;|#`cVz8>%%WLMxb{=S_O#CE%glthL+d1I zaIoC1`p-zGMyet)iMlKBcPl3+=wM?Y8uJDF&{()@+d%j?34D%^b=Y@fioAbmeCJO; zkGn8gVL8&vY{IiBF7~(rpdCGB{>sT>>a!MYH=U0kg3Vba$v)1RA4|N3N+EIxqReFj zdfR@6cUc>wM}kBKrS?azn>L0&s&Ja_QO^=t!EHCpl=kAoxI3@mVCaO z3%*@^Q(fcUxgRpk`}7v+eG3tQrX;MP!BPg~FFzN~)jgTW7ws6j_e2>N_|G44HKmG7 ziVPXIOirxZ(?uH_r7mGIP=oM^Vj&2mw#GW0k zO|U};KmS!aiqPnj@G6K96)}2~W0UrSmYbp61Q81)PI^Nm6uwM6JdhK0S~=5uPr+c6XPdr^0(Ywobm!o(oq(!gpSSMQ4?K|bd1qMp)VB)LcOdly2e&d1uiVK*#>pr z?dp)f4MsjNg7jmUAC8c4Li_i{=C_*S^M)Kk9z&w-;M`D%di+qFy<)4)=kL%!H=qgR zV9scv)6E-t@WI^iZ_f_Gi(&deO5zlQ-Sls`YIr8j;N9z;gTSQP86(jqf4EbW!_oPdX2xZ#DZ?7fd*10cc=qrWPUEm1 zL1s8edSA!0sGLi-cK3+J{cmZ0*h7l_r?I6Vhb@8bzW0snnExpGMBX8i7Dgo*&xcl& zf1W>=^~9Bl=&$~BYx(TA-PEKHe8N`9pPRPKBl~AHUYnioS!_sC;Uj9jGl$lZV%ax^ z;;auJT08s{Z{=hD&NsU}zWMl#e*~?|Qm^qXNwWRP!0JFHCO#IApg6VoOvK}3A7s-> z{h({31yOIuZYz#m2t@f*^L=1DHNPZj3R!a5IFjk$J2ujP-(IzRPUq8<=b56t$b#e> zzWkA_mmVrVmZp4B_ZPF?MK#kVRgp_jp~ClnJ#4986~F-=;ebRHa+rD#4v zbz2GnZlo^{SPyh{XiWiue2)BYXnb=4M=Nv{ zP(%^$&~ZU)6`$nRCEJZ`&YdKIMgTt|L%s8aNTt2o1H|~-! z7t4Cl2{quBzH>u{ZZKa@)qMCHp-)O>xY&scz78K|bNYhDagAze_knuJ>JKGyptA-5 zx|&Ac!=JY9^38vZoN6qh`bTE&*ly|mG0!p#y=H3 zzFHv1;;cVgT{xdu-W=yK`o`#-mD%t9xz-qU6aE$G0Ro&aqkwyNIUA&o(-O!{@L>TU zT&YHHI_w?}sZDFpKI+HDS`MRSM1yd_>{w13h%HJaIKBsJ!6jLt%%}_25>S+Wj1Chn z0a^nYb&qU4#m=%}Z2bh5jD?9|+LAH=yRsit9=Io}LiTFmOD)DLr5q=16I9Cz5uwS4 zQ~py5e6IvDi0!t2i1_5Sl*PxPO4L~wNHo{6mH8+=uA1}Bp2rJU`-2!*-|~tdX`O&= z;Nt|&y$0Qu3Kf7KwBejxClVN$@wQ?2vwj5|a{;c~8aU(rru@@w73Tv6!D4X*H&jG- zY|q13agA%SlLVG3vt(;(20DOwr)LDWy)^FXlI_SQCS8S7^gA2P%rmX=C(oye~H<3XfwQ@$oJtX-+hYahr1V?>wTFF32Yg+acz)aB8c<79rs4CUV?;O7&@`$c82)@RsVWOG zW(^W^b_Xjxv^exUU({4gZcwdwvKLunDl)`$jR?54D+@)@hnN6Yaw5rQVI!)=c}_4f zKEeOS<6ED99MQwweYr>DHtG*u&iMxqJlO}#A<;qEdI7!zl-M<^Jm=p$f){=}-mp1% zvx}KZsEP`uTs<%jnw;Va)Vu?kz#XVQrw&CNlzwyHBdvbR`F!un|H+Dppilk)^?+$-9CzF#DPNQau+&`6Hp!H~`adWdBj z*O2)rD!100M2=)g{PnSyW>8!&;%Y?>7gIs!AeK%qR$}a4oTyG-P1y?`m9x)xpebY$ghY&5bJTO>&ukWdb zXgDQ>r3Y0N*+r39@9>&wm(2VduM7M+^3^advNGe$av6r?*_4x&-xQVzTk-DrY&K#5XiM^JnkKC0R zBWzUmp`eZth=Q6@1zI1qf{RG`i*^Fr?68v{h9>C$fVIr8${>R0N6Cuu=~jUAuHj^L zLTlA0Lu4y{CIAQlniluVp7X#;bvb6jkW4`ibXhE+{eqqz@?-i?vuOy6$=eva=+ZeqQxf` z@W-3>&SBje;XkOf;oD~yCxNWiZ#9KU5Hp>S6UqfEZZZeU4{$|O2Mt3KR7Bjk1}n}} z&ItPu`vu^9vEv?}>QEFoaVh#y8$MeZ{$DN3J2N&7<6P`$6Kw0;r2AlJ6Cyx_#QZ>@ zDB`5AkCE@S&C0kk9vC5Uj2fW<*N`nPOvuaL-6Ym z`hO^jmHm_F2}7WJTszlp%3d`_`4)vIjV__g*)Lt}j%Ef7E{jq6tErvmckYNBr`nz8 zp6d6yy#DgBAPg9#qP010lBZ>a{|RUy08Aun?Jh*1OrYtAO}H&zhG3{;_;VnA;%k_d}H`eeS)l!ASF! z3rh3h7i}Kw%nO@XQ8C7a&qEB)m8FMDzjP|VotjO$Khj*vaCc#iEZ2D46_)`yb&KE` zWzEXkc6>y1%1%r&t10hXc~Wy;alMxj=^T{(#_5Lp`dPK{mMdH==|#Q)E2idr8$G&| zIWVu*ZG9U(CNKOBpwMFPT4L0fS=+qwBHTvIX`j!yC7-GTEE zsdU)E717_g4S%VRu1q@NQ)mQzpI*L-Z}1*}7+kFYzCxyySNGg1&)a(sj zEI3;G{Ld^87yN#&S})?vkE*@j*2Uig#_!2)BLjjvI6!8mjk;G~>E&Hjw*+nn-AAs39rl;-h$rRf;3vN5$%V`4lw(!2 zxQnd62gvx|WB~H9`Ff(6)6rI4kg3y`Z4iZ#>_q^Qg+> za?gLNwx#=%FCnv8!rB`?FV1iWzwS|m3&ukNdA$ceZ`+A8G9`<%(Q)pQHP`#VsrFj0 zK&f*AY5bz_r(Q&5d^~P=W5dQ@AX2!JFOtd}zYiB^3XIdn)0I#e`nJ; z_KRchZhksAogmVhC)bZmOz{tEm7JS16!X2C*fW9jWbc@IMJ=T*kcSfZfT}j~`7-oA zU{yc(>=33|%Qc3HlMHPb;`otU)&XhCJyzgPy?$d#jJD}fIL8s~ocMFKf5ul^MYO$L z1NCXwcA?rAdNpdy^94fWO$=y!-z*}^72C-=rx{dV^IoTKpNAW~%bY?rp-|^J_3put znwPiy7d00gTr;*G*axJ#1GlsgSl|3NX$d6IJYr(4u~lYyGVQ1H;rU&l32IwBxd3>+ z2eoAs)52(jYMbQm>8q=sTWRura{rRQ`jM~#v&P1p>&c%2-B3V{Lq%Vg-fr8@`O0+&A+5x|Z8!N>rT8NROo0+N%ojWwv=YJj*6d<%M}Q$1u4?YgP8szpfbDQNl)h-f3s0 z)91F37MTNUpGA*!DKGr>{NIJvx|Dt##|w7&{wmh_4kp9@d(+Y8&~_3yc<6d9s#>9w zrvn5PD2?5PO0mnd=r+)&RGW=vPa9=&R?Uw!<|qhZKZKr}-%(%9y%?3{{Mj+dK;Jr{ ze-2x;5qX*=$tHMs@Y9mpGilZ^equ8h^u5U5l zR_hVG*xMbeZq0eqN-WU}ivGZ`?IngDqF(SZDU-`(zQS>?`$yEWl=R|ui**8DRE@_} z;lSK{L0&Gl;U4sgsm)~Nf~n*uBR0L#rkz!XW$hH|nlDCSX3%oal6OXm)h+lZ6_Dh~ zXkwFo+TiL{@YV;DSG`~|v|_AC{X%vS=CZL{-9!=(!U)GNZ(3Ho(uI07?D_Nx_+JrvlA2zv$dCHQX96n~h_1H9y9h+I??!`LCPXR3yxd;rpvVWuhY24ls|dnfimU2%`-LP`_v1yPQ; zTshRFxHA#iMRLo%r8CaU8HYAt9x90}^vqci4bpL$D2y)Yu-|=0vx2Xo;Zwmfs!+|V zFbm7}ah`DW-AorvTba$f=Y`|DfBxl=;toA3Vwo(gQEDO!xab}WQ?{08Tg>eRteRha z8aU4&WnVHyR<+|=^Vz9t77f`xJsuLcWX`5S)ghP^?q=wF;;2RZCUh3@MU@7M%XE(+&CCBtVzAfYcTWr+i-+T`{F`F%;$JEky zfE=G|H%Xd#h?xzQ?Hf*(Q^D4B+?}kgzUlN1g5kA9ggStR=p-2Aoa>c`u(ONnBx{KB?iRJwOVE zwcRo6+E?VPON(svp4o^}e!+ESm2T2!`hLR+|& zeO7I^)z#a85yJyLRzNei2gXK2`uV0E21O~7Rv~csax$s4xMz@zZTpWyIU|t6_46J4 zPm1ibTPs(O!FTNTvY69? z2ez&Y^V|^`O=#1~jUnqy6~Pn_Hb%k{&1SEHr&^g{D{s!{brHMHVkd=3%vRGlRWYw; z9E)8(6BwvLL)vZG5~`1agtP#gAnAzKagPxlZq)c1OQs5lexp8fg~cvK?SxBcd$QwJ zO+(EqW`4lkV4(kw?MD|Gt}Kh~*^Y4Q(Gqw3(hnLpqifl{$2dwLC}iu#DB+6i%^E|? zt?f1?_|jOm^0*p_B@6rR5lhzVsAznNLW;+SlK6Cd= z+(=wwwek3MaPVzSnx-+KTwdW~Nn?<~2-Ulc%@--@i$jVhg4A!{G=)T!uIC`K3^;M0 z`68<|)4zEAn13b5!t}OGuje=&l8sknS_`%DQ}@NJK!A#TRq6h!r^?4v-oo7>NNs6G z!BjcUbfiUn0E@>q!C80_sAZl&W83IFU0xW>D}bm$s**)r(*W=tW_4Rq#kt5;$!oG) zI+NIiH0j0kwPQ>yg8ir(I@E1Z=SJ)t162DbOO}hBPQvu%HrzHUB@;Y|*z;d3TY`33-H1Pt+ZP3zA?0|b~{o<^otw@os~ZxrW;$-WF1qRG@PJs*SM~Bq*VR0(cOOFhD&*`zuaJ}xo~yc zH?cteXa73(TlKe5Tl9f`*HDmpneP>;O~`xwVE#2{z*muM6k(6MVZ$~R`|XFASLriQ zd^SnwOf+3Veb}QVwdl)jWFw$64`8-t94Z3wj0L5M9H8NOTCn?B$7(*~HQ0o2l<+oP z%PtnzchqpUN4M4_RvH79tX}hQPdGX^VIFWH6=4&9lX-1St~eFd^}oU4MePCY<==hH zAIJjMA+ojS7NqWKh;7>aLsM`WVj#Y|AsAiWTWWjT_c@58vc4i~0wV9O*u~N!iS7~R z72#X&i(15w;}nIc7WJ9BzPU%5qh({*AxCKi`wuz#&V#KDDwi<0>U=8GG?OVhwtL3* z&Gjzlb>wJm{E)RT&*kpWRc=E;00eqzvm1|?!JbqSIFD$3AGy$^n?}N<;ZFJ1b%TN8=xJ*?6F%c&$THLnY`X-;8vY5 zTHWL%wD+-<0Xs%y{kihHb;tJzuP2|davq-EcH^mE5gX>*6=nMGXi|3?Z_LM0Hvh zL+50?Oh4ZK_)8uq4b=E%*L=-IPGh8oDidrq)?~JvOY7b1u>_te6hplO3Jn?O!L;lg zFRaoVKQ~-GA_J0XP@DNXRQb2&UETMdp=p(GrJWBg7kRxnH5t`$>ie_Ao}SvO8IKjV z!u%}`#G!$hCP`Qc7+m|?>@6|LeKJcZ%bN2HUyvmWi)QKUm5RB8TYQ>BNNZ)>t30sh zgSE~-+vjA$4b55^7iX()mMpo|vxlsxQMy(qExCK0eYJ6EA6c#U&P;F|rlWN~5VR-J zGJE8R(qjNLS?%lfV1^Hlj90n>Y#^iepo8*XGemk4V@+6n; zrwIH?X8xC?#|tucGrQbOaQ@|kdxfU5nA*2fmKH!(x9GKE0eE%N{ z_F+q6OwYj@Z;xhQO#l?hc~@dx7y9Hsq?PpL@{~y1ESEP#^nU%o{ibZyINz^_qBwcW zkZ%FK+l8{1At5W4%wfZuv47sv%Fa@06z;}$cVf)m+Z&B>9A3ErVn6Is{}VRcd4qpy zslw;GMtJayUa1{*t>oqxu8<;!ipeS6L$FYmxeoT=@aOmYQa;faLKyFfqMsOd^0qKnioMgdPWy(m*|o$Ex@bcyG}RN zcK)>C$GSfhf~aAp&bKzd(;%~M1 zcL3N|0XbTt?fv1~_n_$!WPni7#6FT!_dOFItP67S_@s%Po@{Q*eX8Q?m+z|T@VYn6 z6=5Z+ADagrRL{{yRnU_pI+qC#=lSewq+M^b?^Cw0g1B{t&o+E7Sarr!uFLr!p!fdf zEgo#=A5vq~2Nfo0elXuLP#L#Hd`96aYugE2R)Wh@-BBSvOH}HgMxh~}#50qlO=5}4 z3Xb)O!ywa?;BYUS_j1P44VtKi?_X3zMW+l%KDWbRY=Z~k;AVeTQyzqb=%Gt3Y0;@a zjrN6TY~gQrRUu}ma;+s?d(cWTx#++5YEpNu_fA&RvfW**HeHIfE+oWeO;4%(kaI}q zrv^qx)h$8^@8~{8KIM^#3$HI-Oef^^-Phlm8v$=!_M}-})}s%)F!ca{xh$7Fkuj*$ z$B)*ju>XQOUwnWUM+C~NKg;XWph&TGM3;5iM9oL>@Z~8!*1uk zg=B0RlT@o6*ln`%KNh-OWLaRxvqAj$hafxQCdCy8Qy6p=GnvZ084#jva8fy|V=s;P zqRit91EoykU%#5aoGQv%xjHK!yrP59j12tMDGEa-RA+fCyf0r%1~3DB;$|*E&hzv2 zeCtH(+0jF!qv$Y93#I50DlOhYIrkN3iE)IX4ftiM25AzOyhw`yXsCB@givKckWCUP zpk{hx<-A(okOWclRcuLJ2n(HB2EeJ}@XDfgGTw4bd|QwyTHj#zo_$(8OAyXQ8Rman zkymwhfp<9sE0x!tw+`9a2RKMB%lfw#vcT7F20%jjkbmfyqy;m~4#Wnv*V& z*XmR9BY`pWL2P<1m0y@5sP(qOhD*&|HXhMl74RvnWNP;MMUzq6gn4DNk|=s6ix@g< z1gIkFjxE{3AT3pl5uW{3qBq<%uwG;6L(_CR-?+hyFm3H|*<=wmlce^yVSr&INYsj} zDChQ3_2(fgn;~$Se85sC;drct$V&nL3R4v+f%b`4s3o^TMYB|4vH-Vpka;uC!)3Ju z-g(i61#N)iDU{1h&+}9~TV;wf7X9q;^-B8?yC$i6cM5z@VBVTpo%;>3(yY{ZA3foq z#%cjkHacJ?=B#?#;4(S2<1^crI|F;8Rs*dLX#b`VjW4dL^AjVc$sgQW<-d}x zh{Yk%Le5iyNp&y=cJtPuUT$;ivlnY!GHp(t>}PPla3gTSe44V-a#kv@8 z3`3UHUK{kcJchg zpx-pg{(&<&z1QuOZtgf9!pKx%ARlLvtz+Wn*V&A{)s zfNT66lTBA`_{9y@CtFiz^6ge9r=u`1#PoWPJyG6r=(fLbTvMvlcTh!bJyyN{4@G`< zQ)*b?^4+Ov*C>%=*-x+0-~Y%lB{rP6Yb!y`!|==L=p&v9NO z|9UFh%$vAfEoi+USh*=#0}v2 zp(y`_y8dee?Ndbyj?O&zKu|reM#t6KwUv#Dbh3JTnm0b3p7~8G986SG;j~F_Eca74 z6mBELbtKA}EP4-E79rEkA3%o@gU1xZ8HYGtX>!A12HFFr(ssDmMw@N(F31(2${lN6 z_j@udM2L@d*iA2>#d>--cQOeCa&set&Y3ywHS@vF@Tlh%;6#Y#LzF!$<38RRY=3Q;~c) z$xfZA!j$g!FYCY59!1=w5hD&2q#h3=b@je@ORP@bJV_MYb6uwL{kvfa83hO#sY^xU zx;Ob;mU0lSH!l{INj7DQ=SeG_bfc-1P`0;T<@AwuqIqShM!FIREn&Czx z7OW%0z##%r<82v>^u)3bePhL*vdukprs|h?8Y&kiGM+AaLU|^1L`mV)LV$9-;jUSC zyO~*VyHBie=}dMQ$|JRk6(9?Ec2X^ZYFnpjE3H2p<#ESmhS0*!H=aq-^$oo$nPW_r z(Mtyg5jac`0$2e$s?E0O^|?xcJ=>hcI45NfE^ziwo(Nj{T^4*gNCbXnl8n!`s8U8= zsO+lVZTP-J>9)NtmIhHz<8Fmh9n?TbVKEAOhhIuCaArlI$J*FVQIK5X`CSDKjjJk4 za;A^=3Gh1jSj$&uN_{smb|#ikq=csDF7XZL_4(q!)b4sI3D1Xdyir$gMXiL|<=;?I zg#4gxS_Y8?h1JGCFMouQ74 z|AD`Obg=jn*nixE^gm$l$`8-V=D8MvKHT~|wfMCqE)egI1X9qG|46IC$()}lkl^=2 zJ&3ln;y0VCF-B{DK3>2;HgrLYitX%@zys3F@Sv=8-EHm%oWp>LJKqFCq-w_AHVHRz z+oP-Qs8K#>HYgIr{%-7N^D!N@vEz6`3w1CRkvQXFSgj#38Dzn9|GKNu$3Oq9YVf?W za>I)-@`|Z)IzAcFGL|^pwwn<3UTj8|#V$Z5Z+fEaQXYP@=JDSMmbc~us=;zRw%W%F zt=I}w_@io*wjDc$TPV~d4rae$DU{eLP!ugL&zqNZg)xt|!`NKH?Aj;|X*;KTwY`XW z&;Qk4XECYnY@n(oLL7g(OzaXdY0ud~KQsTcWu^8nFFTtD7YXV?iwe4zY9#v)*=e#d zi|UmOVb?}X!d6oy1j$=e`}#Z4=rt zR;St!Lw|}tuXMSbgm6_~N~0@q9^2YJzvrr?v)&PO$wixXPNp=@KbsQH+48TlBdug| ztGE0Rr~}n{wktjJ!z3fR!*E@y$+v;Co!ww!0(tkIJNEc&sB=}$u>IPD7U+xZW z7OWoXS|-bU@{~@bD=^AswrV2B7ANam) zB_w!AwoUVQDvt~oTg$Uu4|~ZDzg<@jPv@>nue>?|)n226ux#%Fg*P?QwmL~e;jazr z#RcQXnufEkvIP2?+V`C24}G=X#5_*~xjb$9Ph!Z&$c>zKORsU<*z2q?Q=CNdl)s|E z>Q&4BG*UX-G7`*_AU_q2L2Glbe3QKRN*iT@kca=Wv_uJ9S^v(oNw3E{hS$|=U*2{w z*JciEveJ_afz0aT;+ddti)|q9=f8v)?OSSIj3$4Jl!dJu0?snunv#9xSRSK&q>U}F za<=vsO}kE**t25?X2nEji{NdmugMmBBao3snV8lkMr)?gTL(s)k2Kt7tSH;*oO%D& z(XIPW_Eb!rLus5__QAo?h*FFFj#Q(iz~%Nc>5_I^`0VCehI*8F^4o z`4m0wPWRv?Ozen{Iv*!hUH(+dL&zKMqL}oZzW_RKJ;Bq<@~1RWFqjCF*YjvgdcB)j z6?g~PiFLf+?3U>-ad@B2JRsA971!+1q)A`ho5_>TcFP7a(*Dd;YwsFl-j))hB)>qs zIOAa_*W|S&{X;ioyARJ^jDGRkUU-UdN94OzlX@`JLGY6%XUlA}^lpsU0V$zFA8BdQ|X57!{U2!&^EEy&LqBOk4NvEY@_a9rD zESiaOZ(?<}vVF;kb@)q7ZwJ;e=|$))Lw?BLAjh5muH7R5?<3csg=$2O2N#?4HW~Qq zZu|mADvTHIw_Q13c={^5$w?E5Y|PP^Gb!qg{2vSGcUnog-P18t8vlrs@NLq1Jn4Rw(PpTjoK6fPt7^CQJg(q)!sSChWpjx1}j(xeXiR?5Lak9c9voi z>}D=>CVsN=BElgXYJ~Odo&hvr1KBF(2oo(OZ{1pv*77b#EhU;MO%t)epJbMbds*V6 zSY=x`!j-~eW#@Q^;4G=DOrZOdaf27$*y73yQCq2k6dv1s2+-%UpVuO=liL=j?{lTB zrM#jz$~p+jvV*lou@b8QaXD%`Ft-8_#~sPSdlvZ+KKURJk6YE)%3|S5tQS7Ko@6Su zPi>f#k>J$)@y+?Mjxr#Z{NAZswG==Z|0!=C`M_v&nQj}Ot?cxF6rE>SlKtDqHBHkT z4JkFW;TA0yZp)Da+yhV?xd*6;xUFu>G9@KH;!_sEGk%h_$?{y#h~ zc*Prz<2tyG-|zf>&(8-<`80LCL-OflCYA77hYs;lusGaU*WQeCSD$)iucRHyF(guj zatT+9i>$nrv~MvafcCiZZ~ueETTP5`OYY1#w`2MBgY37A+lYtv8yDgR5c|Q4%nzt2 zIi9A#NYUd(ZMjBT5NTNFbLz{u{k5c^4-vl=T`B@ZXX^ioO`Bg=Qb*+4*{HjL=6_hA zEaRuKiG}EbrIN9LVu8_Y-{SbW!+$mL5C%$V@f2sJj%yi5K>a<)(9ia*q?o9m0Us>Y za1a@v8m;@O0UDnl;#k}}8Bpg!>_YAF`Az&Qd_K}*)4N?ibMc^Kqr2S|k~h&D^Sl!L zf$KE#Q^azEd8GJQ4!u`Ya2{2BPUy6AIF?~NF5hh6{1u$gdEaFaranAz2B4n#(G;}Q{cLNk@Ek1%W#fZgRyEv&z3AvxYDHJ#`>wXyw{2i5`j5a~-< z#B=VrHM|PjiWTiL(x0rHpE{}L5ybt#fF*QCT1Seve~5Uw3To!e#7p`|gCyhNsWsig zxx&&Dp+)))*ChX?+|WzGuVjkA`xGIX+xP(cPYyWi*1z5VoMxThZx&sywK(8dsYK>Z z$Of8R;H|f7Z*$h>4&Z5)y85u378)0+h|G5T+VYC!>sAt?%`57WgZ#C7tMzM$r`tWB z-F@4*z61AOxlGgex^H(P-#_o1>@w9UC&e0A$Ym57n?o<_b=r!Lw->G8zK27Q-Ot5C zZS&e)!8EtiASCqyXBO^rA_*hluX{M$DK$m->%Dz2W3I`e0y1mFTae5p|2xk+7%V9s2?(} z!5?r4Mnn;uYM!jwN|a-tUdi&}hoMMkO1F2zO%3&NjzasYC-C;8=8M5sKU>wA9WbLA z=$(fPep73|K77{^-}0f2Y-@TAArJYiJnS|yT;SWMICmUgyF3=%x~Jd~O0o%3Kdg`u z9VvQydbp>h`LuE6eQ0qAU&j9Dm(b0(W8>jpd<%2hy+|zgfiqmByVS9#67LTzmOxJA zOaHAXPK?YmPcOGRjWNr6|AIWuMjCP;XK_Nhh#^F$=Hcx|;U}p+^a|Dl<8l!=f;}r5 ziIp0C?TuWHEE$5>S^DsblI(P-%3=&vCoabwiNy3m^(P!AofDC72X=g(3+)iaz~43v>#&-=d{`(~;H z(>j7q_frA!=yVqlEK0H+RY7~UTrfa{rCEk?LlyTI3F}_$d<4U09m?*Zdj4^naG$&B zBO^S(3m_-Xyk7Lg@r;jr>VAkhzZxJxEovP1Oc%&3eI0B9DP$gx74@u$vP1nBI?EJ# znPFN>DP=F!GaiN;*fxflb8(-~fOo2PbaD(TvS!!&intn1!(3aF@!c;HJEI;uiQ_Eb z#%hYpRw@x+*l5$OC-`o)L3<0wc;ArxXVz@VJ@?a#1VuijmGq0lgz`ZsqFL=7QQ7xF z`*O%xhR=2PlEcmizxLX~)pQr}pq;cZaEnUJPkA8WBpUuifi6*Oa=DtHq(5_y#`mlfr-y_*v9hWRyh*%-y=#%)%VA)osuDt*2){p z=kar6)4kpL@F>q_?Z`G_Z19DTfSxtSxNCllokNLO@t!+8HTq5M0pzhoxF;Y>7 zxOtK&?ZCOeeprqmFS2NYpSN7q?NJvv^}H{PH2C zJV6WDjt7ZJ)P48r`v5I~Cd8IIr3bBp6U~F&8|1jfy|^ac1#^BZpT=vG?KQB~K2e*I>IQstHMPrAohL$&P7cq9vw9Cp`>bK*Q-cSrhWq&|+7Ft&$ z{dx@0thC$m3rEuGWVfr?nL-b#6CvLl65h5T2E4;I)qc7@9BTZyJh${+I%m7yfLl|K z=?@!1_BA#Mi>(tr7B1zy1h1Dj48fQX*~nWFRF{|Kg^9RztL=E^-RGi1;CD|py*C@H z{WlM*y3hsa1Yu=MwREA)b-%67NHfK5AnQAsX{s7(#E2pUpU#g3@*ix;&z<)mp~IiZ zaQjH+q`7PA25wO`0|$9Xr2tqFYLa<^XlRA*|m<))OO)_}FQ7H9ejEQ)__WqKzQ z6FUPfqV}z0ld9t+pz?pvE$3U!^WhJw159pz2!64j={%__^LKnK{9k*I2V>G#sRa#}gyh60rz0~rHG3~!=m-H$_Pwa=y$BF6tf123Tx_(6 z57BZ@i6m^~>#5K3A^4S^pGs1Wr@(vbJM_wcw5|)R~39Z}%3Si6OT`?b_4FfaNDZ z7LmSe)D38uH91}8W^%zyb>c-B=N-gO92enB`KDoQg@e2V4$;EvuYi7V% zK7b0#R4&3yPI1q5D*r|j-w<^71@nN-c>lb4>q=F}M*ySdlscSF*Rtt|8-HBCeC-$F zU7f`bQbis^BSBMPdr39Xi7qq&P62nBX~8#u4moLEt=Cp=kn=yW`3%I-DqfyszdHqJ zp8`fh#JYWim;Df>;d4Ee-&hbkX62MYh>~H@Nxk1o(uvjGB=7#4tS!5|uyCCUgLQrdOtNNAXvpgAVIU+jd+cVDxx{&D$N6_Z3} zM8ytyl$8zrNyvqqG}9H2e=5dSkk=n}vr9*FZaRZ}wB?sKN$$cVqzouEV4+-zUq-sT zLm%OIL+JBixs~)^(DxNblOMlc-<=uJyWM5jXgvKbFg~KESN}Ksbs`a;dEP$O?v z6QWjRNhqeFMOHpL-JJx9@g{?@-&SuXe~?rZpWW&2%W7XkUl ziJ5!=U)$za>FPTU%KA6DZdw@0NwmVe&dYJYn^O?d!~@vpXIyLa^1dx=TXE8D7j#*M#is=#F1eU%w9d6r zV?ysaxF(ntWfnC?;C}HW#6qXO8(6 z)$x)`;}6D&Skm`9XwGRzO!7$bv(4(JaggG$v0h}cKgMS1pBq)&%*Wa^&I_m1-;kVV zMR_?26|gr>{N|;k{1r%s)Gw>&ah}LxA@3BVKj?0$safxiRlQndqvM+Sou zxE@=Gj@4TC7V&YNQ}~!>rtmLCro^V^Jp5AlnQM#V`i==CUq8S2;#e?W$Jti=kp}YV z$M-)L*>T4AI75pKmlmi0apYW4GLu1$`<3NwHvG&|5isMVy^XBH!`pH~NmG|G9pv|8 zst&D9U{*hO{=C#iP{4lK741Ho*{|d+?|r4eKhCV;s$NwWF1H0*Oi9FmF`=ux-+}(s zxgNA)y`Vk)N}3*e?x*O@cfehq`b%qCKgO3X{UnKIeys$zOH!_gNrBgy{j2#6Wn)V* zg{kkd>fDc;x8DTu0$F*-&xY9F{#dBha{C`gTBw*da57&>3sif%CfA?RwNVh*?C?<0 zGz*K+#Gje7zK0Lv6?7XVg}iiNE2bs`=ee^wNJ9pS#Arnj z&&mo>7pD3$H=DjGaI<-Q0r$n|tRZpLhh{4V%~a>vR9v#WG<@b$Dw}n^nuFhTnyd6q z_56W#Rq1XzfK6P5j^fla5{D-xAUD@(#`)InXZ5*{H(Xu{&FuKt<472h;5+=QX|8&b z1y+hd_03&xND7@ny~4bJ!o7Gzgm2!8O?Gkk+fM#AX1>jLl7+1lZggE2-}2-c_n!N+ zr(r55$;XUvqbF4iH7xo@> zOT+yJ`1c#)5P3EsHjM3u0F-JDs0*~9{n1a#>|Rg@#T6O}*eH#_OPi!d)2}$?%B6F6 z@nYN$QGMaH_=2IcfFu%>kXhJ{c)b;L`P#GZJ(Z@eJrk<<*Oj2!77L=E(Ghsq-TI2+ zPN*Vighh0;>6+4aD1%zFImY14cU9TMS3AxxR4$xqbFvN-GcLr8Qg?e9_eH^1)RRbl z3J2!a_YVxXYzy*U6&`IK=YFyi=4rFF&f=9mtaKauo~@WL4`S^NXFl5aIc@3;J)2j+ zjH;HsZBH0>vUk~YlajxNtE)luTjrC0rmxmiM!QYZ+ezynH(FJNvXDdEb_ zHx-LD(O@imq~JQ>)N)yb&W4S12fHV!(m-0f#$VtJkCBcpODfl}YWU($c!{rfZsMYu zx!HTNG{imv3a&XQB$?n!hcZ#`3VO1iM(~hx$OP!~Fu8L2cy-^5l*ni^`1Zho!&3%q zRF;ufL9#J*fnZ;vq)ph$BhOgsNU?#VUc6=J6z9%D`8{LW^>kpC^IntNfh$B_-iXd; zl8cn+doWU~!sstLf$+3iURLJl_kA*z`? z-!)YM#M+_8Xsdb_#Qhcc%9+Y*fwN*#fJNlb=M{BZ4!`H64X)^H-Mc&eDpSN?)LVzH z-Z{aCDbvx`Gg>4D;0}K{r;O504>H|yM)j@wd7&vZVlInckj20pcC|w;vP1hnA_f%iWwu&6TwDNz`h^y%f z(_`vr>{_NJtxUZB!kKwHd*6@}o`pZM#Oi2daAy)d;XVh%BdQHhz@H+qP(La1QnDgH zZm!~+@p94kjelW{a4B+cxtLLhY=hN-oJ7Rk7?Dq9m?WOqj$@W+{q)RcT0QOO~8RZoORo0$6 zEcbWDVQti^kD{`uGJOxy68~7b2f-Aw7%^9$vwrK9JgxzTgXY-9aSVGOe-V=n(5-ys zbM&WGWNY|EzT4+NNxm}XMsA}$8`rhJp@$t}4E2RS)yR&Wy_8|w7fV0G4#g+4HLLsQ zEJhU!7}!Ebs^rmpzkfN*XuhzC9<@CGHr(76x}fGR6x5lkygtPfLn~=n!7VSW`EnnE zVK@7Tp>IDeQk=gN7VBY|_IPV-e*_!d;^zLKlw|HOZ|Xhq?&Nu*hizEJz%*dAKZfy9 zA0C{qUlR_Z@O?Sh?6o-1OHLj%#b&06__u6rJ-cbxiA5;!V>||K`97F;b)P0~^h?%1 zlD`CMu#i4uOi!6b3a58c;)ScFy>zDO>9e5g!@lD z9~=%6UPw!$?Kj>*qVN0k(ogBFbLG;KZ}m#)PuS#}?a_Eb(qWXt`=izWjkFz-C+yi* z^$0VI4X^jAgx0?$ZhHjQJLC2G;E#bHp92y4#a#3Y`G+94JT4xekJMZTmFy61{(?DY4JdQC=R|K4?k(vVm#7{54inyQKqv zMJv^R)4LhKLiFrNNp`gcb-L|S8Rg#sXu}H-IUQP4Xkr*B-S64~{JLjZmOBF^shic@ z7?aOj0dx+iSV!0@Z2yDoE{KkUnVab1*6%1Rj>FQ)G`NicB}*v=OdGU;tFlCa6T!vN zVD3z>YW!()_VB||Dm)cuigirT&6|$O*%T(KWHS$>Syymq{6(tr^ruT+2D-h!hk#Dp|kZFgWx8(bS7jS zeAo3t0)Bm?Gm>@co5~%2@qT_D9U2TBsZH_gv#ys=J|RBME#ffzLly|Ge&Td-YNbBv zAAdJV-Es2<{|^1sBfz`Lxixa`{(PrP{qU*||CcA~_DZ2&e8AHW^96s#kOe=4@gm1& zNy97u_2)0x+DfJD6W?7W+847Z;dI!**{pTyz+&YAi!zaSzUruW}b z>GAOXk1RSitDB@^bY1Ei`%x$dwjKV0l^?FDu2mVRfbP(xD}9Q8^MpsOht3pQh0JOz zL)Jp%h;OVAe&y4Okf%E?SN-KAUXr5BT7vX;V_^Fmj%4}$%|g~$dH5=((_$$+%!I#M z`eNuh&n;@;N3m$;=R;K&l4;U% zWupzsOZy}2GgkJxy-YEaAR07?CR}=1=5xcsLJqI!+Zd$%al^H&FH-t3!})xdhzi#% z;01k$6{p%?#QLg+Sy(Wa0T*}0^6pdK!*wS^KbDxe7p-hKj~X#Ej()+1X%7eW&3JPb zE~6QuoVMB`%S}Ms#wC&Sg}h)pWUZFyF{=UQQ)%)f21?DHX`K2z+o>LMADrFVBJdE! zQ=cUPGIbE9=*)}nwJ+Uj>grNZhfDAiUYx2|v$~J6Q?S^u5i7c>9&&RAgYrkEyH_cm zz9zD)U5d}{9%kPjy)+z8g)*}TMsa*qfA&mew0$%#4##Xb@@fMvDSRgJSl@f=dCpWX zQ<0{v3bgZIM)Kk^wG^>16Q_Qhk`4K5_2l&29UZxe2F5@_;_PU1pzH|%!X-haCUGFj zE5+-)Nl`D~_fug7U{OXxCewrpSb1aAX#>8%A?*V$z@WONIbB9SUKev?-;`jw$~T_} z@5MgTf$sFp21b(0y|7IaPZ3}K#{r1l{9f(Cg)iupC37*^ulTrVv@G|JvF zIAUO1Fa~G5%c_HBl`z9j-(0U`BpYn$MG1jy`aCP~t3OH7Oc$C0*$L9>mgkrEcnG+}QZ|;sxzb~0_PZG&E z8H?1@P`x+?sK4K?#w(dq5DyaKTLBzEv5}S7Lp}!*@YbzcCY|fBh0hX-qCeDe^<*7% zgJOw*&^(%>6(kflIqUc$`|`UxSHD;r*X15(A+$^irlpx13SeC39wX4KBQ=iMcj;z< zYdsmOzrIj1W3gq=tq-e5a0npuf+U~b_-a&Ligis_kT5j`R0qR59#^Tl!4z+mI5yh;fv%BVlE4VDi{WyFOPdwLQ zd1K;Zcc_-Dq+3~#MqaRiGlFvEy^TW3H6GHZZ%q@m$O1-2w5X$d$h$s#Gb3DFsizkB z6Nq>#rJ#TQ9{5FwH8sfRP>E(1;d3*@acYa^FC_+^GX9$6#nMdRPPntmMh9K7<@P4Jcd|+iKg&;X;~yxDbjw7=y87wJ7aK!3*0&8abRmX;F zb#II6mTUMla1&+y%I9noizHyQy5~|Hro*rrc!<`zQVRoJ_q|rds-w;M@_!PW0~yal z@(jP*YyWQDcJljv%dzboNM4rqc#7X!IGsNoD1PwLU3k{PGtPmB=Zz7YnTKk`a@M*Kk^w`nTo#6iO{(Un89;nDmj7RVX1OC7B+t-no$A+Xi6}oK z)$XRh`ip5Lgl<;v%#KhHf0kmPIMT7HSk2oAod$+mmB4CKv3524sN*~0$#g+f2?i=I z_TE)q`oQi)$p#$|`p>7wSF5NnvBb}E-#kxj%+73OIGpJ#J&me~=qROl0&$_GPt66g zPD1^X^N*LGxA`!kDuYzO6c3Xp#Uco0q|GuEH;*%=5pR8#zzr;2Mg{ ztGEfX3}G*+f*!fzwln`gf-k0W@J=*Quw4^~-MB-5II+)$p{&egUD)4Le(Sav#fUro zGG#S|XX$`za-wZ#M)N^P_h?0j4K(7oJo5rw8+=ee3@d4UE(%1H21Tcgg;l0?c?FfuNxl8`$Tf{7odYSI-aOAG z=`4^4``Vv@YubW@sQI3X0guW&Yu)jTseF@F%ltJ(_j|kYYl3*)L^{|^_pyinWTk+l4IGe_&&t^m=;$Br@YMOvV8? zuIb06Q)z7~$z7%lQNd=Sh)wGNfvoknl#l;{Ypm9?)AMvTMrny%sDvZ3R$`~)U0GM5 zc-S}JU_4qbO3*d!BRI=!FW|ng5faL?#K2CBdOqA7R-+s75|%TWM@uq3B*$9dWPI5h z)!5bLwo;wOuz2yKzW_&6h8ryBUEJ&FSRf)|JezlPZ425-G`gspSGUn`SWKG;_W0 ze{3(Z`^5Ats{_^Zncw_$sh;a3U&|&*#i;@(;JAXX;LwJ9&)%B%Rn_N6uWWC!`oTm3 zAHxMt%Iq`s&y0grh!1693^0b%InlL5xZ0es2Z-`p)-+uF=~*!u)R?*ciVQ6Uxt=(v z>g=el2Logi6St76H5s-((kD;xK=#mdYWXY^mi$v?gZ#Xl8C|8m$FOliRMpXDxmu2i-5oMc-o zmpakf0kTO~O!2@#F65^nmT{G8cp6{yKLz|Kr$#~t1 zjt}49-#iQ9=5XTBR>mK>ZNH>;hI(3_6YMk)O&qO%vifIk+&|4gFo-eCiXcQI&)_Yw zuIL*p9P6j5!ag>Mk$IK|!xY^d!OtLOzud~=$_AvPE3V#>0;Y<8O%EVf_`}w@c(>fM z7oHD!7ZGP0eh!z6gzCuQDtu--1Xgrth83SnO;r@QM1LV1^37l9o{yVl`6qq8nwv(^ z%IJ>6NUl_Z;gAL*8~)q?{cbXposDSwd-klT6l+&^y*|K#lDRiGQF6bjl66`$=Ce>< znHUnu#=VfBd-Y=@Q#VAtF^r2vAS@m7KCxI+|!(tU(Ct zoy_=do3!&2(7od96NdZ%R3oyDtbOMobIWBZl?r87zS7c~N!lB~MlH0i^&J7k&1Jvm zbN^M`SK;=994$9XJnr%~+T_SiN=OJ;a$xF%IJnV{`-=gEGR3}QAbb$Uu$QHInrA`Og z;vZzj6$o^?t5#E3PoMp`$WJ%9@W_@FB1Qzr%Z&e>Px9OrOwEjycm}QJk9#kZZ0XbEucLtM3vobDSSth>6#1S zcF4VAOkNkx?>{h*bS>}Y5JtXTCju`{H23&Rd#+z&t5l!Zec}9Uo#F*V9w*6qpma1 z_4h%V?rOS|Z_k3A77^!5=W;uwuAtkKb}YKk`wtw+J6GUi{T(EWmYrr_4AxFCPcdfcD_KMTdV-ln3J_iDzLBcZZ*~3(8|sC+6fU z@gUiA6&&<;-2BD3y)EeE?MA+{v(-iEMOUBchu9yM3+;~Ix*iK)eQ^8+Yq?%(7el%^ zZhIQzkaRoS8ERYpKMoBp_zFSuyGtnG@kds9=^=`KcSLf+{^1Do+|%(OM?6S1^ej=l z@q+{^770Gi$n-~_;u8ZqKS4v`Y0um3qi5>JF3sp~rpUd2S|i}9(q)ZZWK%KL6NF-y zYf_)qM|`^F$e=kWcg+J{Jc{RJj`BU+Y)NN!iGFvLFUG@U+IKD1i4$n`i=DPv1p3eu zG=;yr03N+BmZKxFNd-nSvwf)2J}a$@M_-~Ojshya?8FV-?s9vD@kV}Kqo_}C0qe1H0`Em+Kl zpajaSOQL8bV6DOyax!k^E!3ylXP5R5h4IEE%&(WCWm2RHnRkW0qb75lS?f8B`t+Q# zQ&_t%siyAdGh7z5$N=)&ppRyoNhrFr9FD?hpi{VDent%FTtfja3EA1yfAJ61 zr@vfsmYC=&o6#>Li+9ztMk$X~JX9q1rU*(nrNVayyA?w;T`uqEZXhiqv$Ech{7A$S z-$bLVw6mlxB0D~1{1~$|Bizr$*14Dsu$5O@GFm$D0b2m4gT8|Gf_-bkZ0#r>`wO?zvq* zJ%ThNS-9p}yL>fgu9J<^EDy#~=@q+`Wj@`?`Wg+YY8)=Y+!qVkKjhxO2IfS&A6kI_ za*k@R-Dvu2X){ME_K1J%@&2mXm$CA-!M{60g(tl*>Cmhq#PX!e6L%i$@n2m|OjR{a|i?z;>d{ z)bUlTmdH$_`xR|jk4JSA$X}th{IiT;pDT!Ko;yJC9}kT`q4j!ct5?+|h0Bl1Ke040 zg5|B?kz)Yh$2L% z)-w!f(Rg#9kGRd|>M7mmoE`WlVg&i(LJc;+Es&<6aK`YDVhB+PHNr9G@(9^q@V*RM zk~so61K`cAum$_3`i@}=$KBWniFRD-lOp}|441HIhve#BDywF$JELJ6_ndf4Ub1T7 zAdi^sqODy-IB{JtjS-3La@pPar_N@aH;M{X%y}EZ{|p>0*Q{mHbrBkF`3C$MrNurH z!>f*}FR@6`o(=ogC%-1c^OpNwIXQ8J45Bboqcxbr@@(Sx0!wo(=)$VFl@`itFledv zE5X$Lo`bJk6e^?x43}Ql=qkrFx8$28W44e%SW#<|IhY}^IA#e~E6E!duqvjQ7fo+0 z+eyy}kCNKQ{2C+Y#oUg;HlK&;>RdDWnz|cIQ66afxtZ(X0_2W6qisR)_tCq*N80m_ z4i_$OF8q(9*)azq$9(P51F#BLmpqbow7!4sB>4_<^hZNwa7_yo2U!hxdrXdep(9sN zk{}P)>53CSSXWRSB#!6Q-6!viK9xy&hEfap>P&wQ3!qtroxSSg@v#WCXQf%2*0Gp6 z*$;n@I#rq8XN%knS#C=i-JIJOI&%bA@ve$sV;*gbZ|8Hqo_z5F6Yh?1z3QnV@O+`I z3{h)7M{hf#Ahl9<-6doU#dsIdy8q)q9!TJ^gp;08GJhJl`q<%%0~rD_7`ok7bABJh z?*LuIxEsv(u(vgIu4Z{;-wLt4RHhgwS`#|+S$|UE<_`<-)WriyHqr&bP1sF({tD&} zYgZQV{KJ5`dZPYv2X`6MNoxXT}t;W%Y{dys4#fJ+=F0MiW;A?jR?T$O$VDV z)cq>J#;=e$%qO)Ny1r{?6%e~nu-1EyTTX zi-Xv8?xSy}VV84RI`17n(w3BU;(?Lm-*fZR!!C38&&~pd>u^p7Zu8l4fdDe*q7s^| z>F9#9beA4ER#c^M`?be8E|~F-=9kV`Rejf)ovGcG{Y*RrFxuWYHU=syLBe}RR*xzH zlP+56W#CDV%`1tDles9hHN187aH7@T9_(ToUehOO3uaZCk5LX#l>=-^v0RxD8P9pN zv0UF#g_%h!Se|%Glts?COfT*4#phVY>J$3WPi*CWloLF(?>qxt9*DT$E^jh~S_Jd` z8Cb6D6HR5+xCq6HNM~Hk%1zQ|Pgne|EfbR=8^~mij!vPwW@noH?)OyQt*w(zz`Er$ zpD~Toe1knNU)qe)jH{EnQruKOlJSmPXq+qX8$Ozg5&i2ya&p@##X+(`Q!+q`6x+7X zx}7*}lKJ=Lt%o-+*bb`bjw>AMnY{?_p}EARZSsbsVvpEvuoJb*`tb;;L;Y?TWURf} z^0~fuVe_t{F-M63=AQo}IJC4>@H$ANKjrE0<>>!Ovc#(g|p8W_W;9*2f-Y=fmMC* zZR`gxrS{u77E?RHKdhq#rbH{sZ0hZ)Qv6N2a3m`H!so_R;ZL1(VVn%rsDiIK z!G-yf4_0D97EiAQuauXa$)|@a%sQ(`m7+dtasm$-mmhMPX-31V7I-~OZ)?F;PQ5b| z=#WGmv~U=h%6)T-9M`C@%Styx^B~R?`8SAtlx8(g+s|dX@*03zaPGDR-PSXECVE)DWYmHBMJy)(u;q!SP6KSdiON7&SDk~7_9UcumAc-`;b z^|uvcu8pEIypCJWWs*4~yfNFcG0FSmadS_{FoZW;BClyS==8^?w)pJVrMJD$DQF%z z96+2jrX|^qt+GxHoY#Ps$Yz*G-Nmr0&?tqvqG5|&g`m1^g0Je_*mI4(xM539f=Atw zrA0=Ocb5Jr>y>CHhc>^w98Mj_cj*m2sAxR7V@};LvbvP;;G>bJnVBg(!07P~Zu~!H z`jW+pXoaR@+EfRaAsjfnUb7t+^O9<6KBam1GvBo7^#u-(@kZ1IxSj4wCi>OsBwgG{ zea1?&;C{hlH$Y3&!=n*!Nx@-z81WcHStB=YuhS~}!nwHIcIJ#q z#PlONF~@PQz9$4fo+4}tGSx20)V`dkj)@&53~wdf#>?hzZfsApem%udbt|>?#n<}1 zTd0$U|MHT1>0Zm>U$QzXt3LnXUtgU%`n?fOZ`T!v??Q!1L43_!s&2m;F3^h4so8qu zI6T|6R%A$5vJru!HbUumZD4?h3UxV)Gx+ZIZXjP7wI#D;(G8YeOE&m8PDhXZG>cQ{(cGL-ia~Q0NO< zqYf{@aOFKnbWXhDCof=>tQlr`@ie)%<=RPkK+C-j#O<+k^$eK6T3STcv-z(kgM~UW zex$+2{yk*(_x5g^)=w0BUpMOG8X=|L)sXIo<`#2>sAdDyg;7=Q(yEL{Kdw#mX;y#P z)Qa}k)7E%@-z@{yYp}^-gK?E7hL?}sy6jk3pji7~&RN;-s2562fI9D1VpjRWw>M&C z2^JfjP6yJ|vvQ&gSDS9#Y}ZXKULE!j1D6KrB{$$t-ll-wk_%P{8#^J>t5)eeXdaD| z|LVVPP})FTgo8cDx-0H4|4}X;f+crno!OLd`v-#a1i6om)JDv8W;nd zT>m$RL5;o>+EIVnPXxc??EM6ldMgKb0FM^mqmd7Bh`Tu5(VZdfQZm>}m5>{lbmChH zhFTc$-e~ykB#vcjtO`IeY5@G&kyrf`?+vjPS;R+nb2E0MFyaiSw z2T-mVz00Gf=cIk3F2zBcvi22+_OUL8gD&z^39T}L^Y~= zv3bH8Z&X?JxaJ`p=X~#;ZYh$B^RUVakO^PSrD;5?f#|~;edMW!a=dFCj(1yF;oGaV9&G1Eq!{YT10N9xWiO7c+D4s;;0LHG2+YuEoxMYSX!fyzN>U z6X}JfR%N&>V<`x(&J1Nxcqr8A7wMJWk(!Z?9W5z)S^~oHJSPvLpp}mJYyl(`8RRL? z8H7?rB}#xnRnd3CVX2AYWGsHZ{E@=xOxTUeAOJq z`!U5i&n@qUx@Fu0|1qpm-CVXSLl^b#WZd&O2l{yXI(;@K8Q9prbM$MnJ_kWmWiI@g zv}HZ`aL!AC*+*4w4w2b>`MR2+l3JJ(O#XucUhVo|?{MeM8V}CqUHWN`)kk1odQ3Sc z5jSqJ7FOGybU{URw4hK>OSI%O*6a!7rGUEKE9v3s4da_wv&7aZFP-It=iuvZlFSm^ zO<;SE#rguijC6B5k{nYqZExA^8megDE5;(p>u6I>x&isoT9!Gv(x2IdyX-qTcL+YO zj5_o3AN~*AKtm6;Lfc5n0YD?xi&R?fH&J(jxQ7NTea;SLom^t3~J{RPl3?xek z8=&0bc+x78n^i1j|0G(M94!4nO<=hUO;*O?b%2%7nd+7# zJ4?vpH#Rx7TF>7#$E?neHSL1f^eVZa?Uxe@OKb864sjpUU;H-7Rvx=iCApTO1D@ZE zdl0qN6~oh32-h2uqj@*`QIHbCg_j)S2*S7H$JKA54GJjA>);3Fc+CFpj$7v{o|Dyb zV-@$Q?d2*XL~x|v(I2C(4*ZMONei^hv<{ez(}yTS>1K+Fk{Cn@^4&bzY0%}o>N>9W zN+r!0^Y3VKZ|~cxlp>dyWs>pffOk~}dx*&_=UR%KrC*|Zuv9hu!hD|=V9H3r4>$=N zg1<2L;u$VTvwxp~v>*>-j_6sqI9$L{+5dBGaeobUy z6bKOQduTR4zbD3zPHAhiQ?W*5Zd9T3TD`|NjW6Afqru0nC@mJoAHe?XpZ33S^2=#N z(#$l{`QYZPhNN`|EJ|C9`~+X0fl)DIJ8(n#4j@TecO4~J)qZbeOU!$EDDh%)sYl&wzCC052)^G5}$ z?tp^XFsz4JO;#!bfsU*S$J)yi#>#gea-yj_3Fqc;T}*JVuX}6Dzd=_0_}$S zgKjcClDl9#?)HL>rWF$&y|v|Tn%1hbTpR4I6uaU6?ETaU!z!;tY8)pF9BD1g4yczk ztfV!ckl1!IjbhOf3E_6=xkgmhUAnsHhC`@yyi>m56$=t(znaUbbyI~ypIO51MON%V zb-ZSk`>@ApdLv#~4Rl2@uBP_lSN6JW@c5Tt2aK}QLq>bYB0DB8fg{)k%&^7Bjy|Cg zZdcR^H4gd_fc$pUa4##%s$|l)hrl@n$9Bw3R1ca%9bd8yq{U*6FE)Jg0uw}UP`4dt zTB4lFQ$e_IFd+r6-_D&*?rnA=LOJE0_C)@Q-bnx|S~X(ko1Les)7+{6{|G1}(XP(B z!D@wgMO}qM8|*$3PiPvE9Ov{91`NN+V-4P_&aaAtAyRC8kg2Ln$3O42Y0T}|{bB|Q zA6ZmxopF1dsT8vg(CvC&PCaG-|Honfw9#B%3Bit2UTyd3V%*hl;Im@`%{_wR1Lpp* zFKvLXgI5KxFe}bGUF=*)eiv2yF@q5#{#^eDwV~`zdwXCn@Xe<>k2$WNrpDJo-siMr z+unAf$Rgm%v%s<0(~6(&s*mQp)n3_ux4F7+o3nuhhuOXb_?$Sv#F!4kt8Yu#*=$s^>dSjcqyC-u0GSy7jkZ9alKBiXgk6 z3*PzHP2e~!1A67DaUG%Cxl7c{^@;__5d65qTOVBZTDI>PLzsD&o?AEey8-a9KSyQY zz+wCGeiGW68FiPcKDkkuo=@AdQ6((_MqWnqpYAO@DhUkTED~-+4$s})issM$q<YB8F`0B2Y7Y^RxLkzt?P~Y57xi1#ym;lm~ zENmK#D1?{TW4)TMpg?YK>za-Woy57J4snYl#cS2YSoh50L?h1I&+-G_zh>&hV*>)- zW6yAKbej{bIDR=CSMA)+QR?DPYlMi4eG%mPY}oM~aW#ltv*ssq`Z!i>^*7zSJKu)y z1xDzKuecR`&WA$jx|y)SFzB$&;Y9l5HXimoGvjT?_h~FKEigfKIsNbm^efg}*I91v zGs3~xE@#-iEu7l7#`Me=Mva65?#2IE$cv#G14#LI{?@l4qx5Fe(c!FyJiQd-=CnSl z5d2C{yOi#6xGOqNC#n*Z%-^5i@qM8+S5x^MbY1%xvf{PzzJJbpM@`QyLMOSu>_)!X zZt${zk!bYNK^f#|VE(qJDwoNh&6W&j+aG3nSIQyGZtC5*9`9RwQb!P4#!wVzeoQ3~ zTx%7dC(H`)1<%7b<^N8!+*_}ZPw9U=37-nRF1I%Ah~`Ka5|4|W(vG?GCK$mbFgZ>! ztiQB9>@YRhG&K-<5&utJnO&&a@I#BWB95v{XeR*y$N6wxUdVb2d@|*V zGSC-fANKO!o3e%x=0-Sleti%sLr4qbO2c`lA8tARJ{mfmVS1k&coh54pHwiL!;aCV z?d#f?Tg^Y0ovkpXwES6xbSSg3Bto8m{_BFWvo=XpBU@KGHpsb?!O-#Gjj87KKnh{B zH5{VzS#`BZn(u!cM-%JI!?8=*k_C4kjn}#wq4xicSzzqvANgC@>Zbxe2;ec;wu~yy z3^4v)^r3!BOp59EOS>Pw6a5jg6(FqkFtUmKTyC{?rFxP|(QUOr>W{ouFDBDRXEz=o|XJRx0)D zH9z0_TetgFHW}L5rmxNCMh-6hxwaHBU4~whn)oO_Ey^eJwkZ3O(G@x0HWvr{!otdU z#rD2%2r4vs1OCI+Z8WCB)&}b+t3imZ=;i<5`v$zgu#(wq-ddn82Uixo9QjWN%PhTm zJBBi;$|{@<4Grj91|HL*8dlA__3f|P#yYx2Y#_X|<)w}Sy;{D3733RD;Q>9!($^*` zmN;Q@Y{;wYZooL>(3e-T*%R=5HZQb7;I5+?1T)(K4+kkB_o}xZVx-=4Vw`qD`s`f= zskI*2%!qUok$-+5Pf+85sS{P6fRZ`W&71P;q^$2++iOWELa9Z6 zk$EJ9OaBmefEZ@TEO@Xu1Pl&Y5eLX7m{STnLIT6-c*IGGKk~haU|{`i+#7m)e%7!8 zWsWPO>d4_gI5`Y-o5Y`-e0l3e>EuX%%kx3&`b?Q=VKnyhYi!TGNXXz`*oV}CRtg4s zA{89scvI8PR#QTNvej2<*Z59!w(>Fd0QNzY4+=C$a$#&O+kC=r5H3v6BPS71olvFJAdBkmQeD_cJIn`~@X&ZH`NX~Yd9hrn1 zW@Xy6v#dfc_&QWWFvQ$grHYpr!Tr)$%8Y=jt6a`)YH!nokLiAE@vkIG+mTK{j4ODEbzcgKW-PoRhZBQ|J zH1U{#z+D@I$*5w*4^buF z;1|#x2hPM^i#Q)*)Cz|`rt(g zStIM2XQ*0clI<0W^@VM}bETE`N~~3YXAcE^1G8q0f^UUmPwbs%ja>z*JAMal249#s zJgQ5jrjNuD|NFi0lt0wkSjqga=_W}P*Mp!b4g`;tX8bzVVOUJ$t2bq+y7NAMqx1(l^m|w2Tz)mhQjz9g-6_LgSc`XgC7A?6*2MQ$szn9;2-qjD zs_p(9?}_1>%60p+O^6&zbi0 zrU`w`ztd^T(@J9silvJ$JI)E-xGF8w3>n*z&Km96fQJlzqtX0a69mzXB2(kUzgZ6@ z6PzR}fz4w@a%td-EcnE*&RdD@>F*~dV@%HhIyH`6# z%&IU6JXHpksa~zqD(tv^1XWO5E3OhE; z%w=l)U^VU!aBKB8=az`&N&GB_bn_ZkbAhx3^#r06gl=lQR*Z#V9JPC8 zUdaM#lKWOaQWqwmP)LSPuRF*%^L)3HlGLc=*H(v4dNt_T2Ga%@K^{Psr`S!Xq(47h zYqVM>qyrDjrM%MX`BBE^&~^f0#|D{n?CO*Lw$2S(C*C4zj`wV-9rp#pNTf0`}6oJKqFg{yeu2)_Z(4eMWeRyq^Z zhWYpR9w^h%QZ}Zi(>?x)uIQMlL}ln&OwG}Nw9~tF+D+TbDAMfq)?^EY&v=Oe^I;eG zW7fmI^`CT^hVc&>0FiGxh}$W(8Q}6XpjY8pHVrVv)H{RBwcK*=gGh$H;9XB>Mf@x5 z^N?FQ6L3F`s_&ba6yA?h?It7NIDQ8{mOrzBMW>iR|9~Gjl3-modJP)Z{KX3VIsvT5 z?b%d~7^vL$gsLRqH=1b|ovWu(BzvyB*WWoIsd|zcbbp%1W&5MPbVii zt|uUZ3yz(*FmC$Xg@3R5MRg>{*sPd)UZAC~j&Ki6e7qrs0mo|@Ukh=mp}A0Y2#&{Q zVjMbAjJ#H34WLLmy!4M1`T5gdw`8y13@ahlJyVN~Lv7gohTC$vo|?pm{}A?8+@w#v zHZGR((2waTUl823xnr5Z$)ViXJ`2KCzWyD&>Q^UWRsi)-3oA5u5@Cfa{SvT4& z@otEzCqv<-W=nvpDGB*uyen>8k;@^UhID}r3Mp3qDsueIY_DlCD~ltRF8`?C8DC2{ zk3R$OmksYVI0^x9`FJa^N~dS8wfqGXQ)t>>pZ)MU8vp2zw^_)l1hkxZ0GG!m1-s&m zgxa5t>$5Ma&Tzr2WtPK-4@xc8 z9(f40Z}BQ=Ga~gBN6Pp`e*{0#I8+p!9=_e?=rNb`9j`MspVlEDfH#)2SH+M7A^~~~K^*Gk{PW`kKuqX@rk~&#M^1c?R zKWy<7nMocbnltu_3V#Hw=FJPKfW3wy1Y8LJO`Y3q&CN&mUf%f5lzHcRs&g5ZeHj`s zJ^3sE>eNO*VtuA;C}SjCm*W#t86Fy?u0NxGPF^HR@MmwL?p;9@>~sluHv~2tJD*(9)~SKL3^dpMDd};0P_z8R z7RAnpHt%gje!R=yrXr!efh>P6{RN@kh#Bc>Zhov}&|vZ+Oa(nlS5PR69lqW1OTYv1 zKH)qYAR$IiEh$_9e=d5IQQ}Lsi)I?J&-pzJ5Zm*sRdjf+wYK_AJGU8q{_yvv#xM}e zx96IIirr{s!xju7s=-~~_ncd&NvE7VF2DG_DaW9U+61@C){fo0{v|b%b!~&Vw+)d` z=gb$A{BBeS^dqp^d6|zE9jk>$7oDLy z*n>}w9Lv-c>= zH|CGJZ%3hr+1Dw{RlLu8DM8a5oD(HZF zBm{=18aT{c5c~2S`C?l~ve(#cru)9tngaPQOGnYXvW+DwDr9|YaMl!XPsJch)i7Vx z)mnBkDX%W-0K(Y2EEs;_$2Lo_7eCP>-N_Jx0=f{Hmk;&ZH0A4HKk{A~z5C^wc*#Go z`3iOgwqDK&xY~R*o~Lctqq4>z+57Ta_N=|n98gkr#L?~=>lRbhhjrgW+bd%E^nBn! zVS#FAyFL3E@RK;mn#B#>{6RknWOpAyzt%P@vLv_irK>Gj>R%f}!@C7+_F`hmYXlm2L zU#VI8{>CCo!ocCMT;`R)8U4+e7eNR1!PYlOk2_q`I2a!T;|BDNL!+$Yv^QY0t__C2 zx18;4E}E!zL&t0NtslVZZA``GDRLdr~_m&Dcy#) z#Xzu)<2BnI0`4z>g`BVWQs3Lfk|lZkmqXs57&nRX!+0hq#e`3 zzy>m!{559)tNF7&GZJL#+7?V{>-HGX2GmM?RKTh!ZRSTCDo^{&d|_R0r^#48!%SA( zJ}c7gSf^s^5Tf@t3$5b_`SKlcs*|E4a$_NeEYYo#kcFg(wlnfge(dP%Dx+$UG%hm8Mx|SBzw|N`n_O;w)Tno0k7cb&Bqd4!4(dOZzTYm0 z($@#i94Sq5UeAy7c@p?s>GGgxONH?Lp0`t{lpIoaPux-m53u1|{ootn1(en6^%uY< z(Z|~NhbRe8z+3Q&RHolq^HQfdHoJ}BbO~@@f{FCgeSW9)rbf>Wg0HV!b22%{LeA&A zeZEk@im`lWH`2em)F{Ef2jrHs`Z~ezZ$y;3KV#?-3tn<6-AaO{`Uo%4S+Zw6TrX9} zI-e%WYmxZ9a7nDg#E>DXy#mI2@x*9Te-kEO(O3 zRuc(8Te7KzWAbrXs5+DL>PZ+%OO~wPtT0P-fSC1vW>1j7pAJ!1kOd*9$~!K-L$(X~ zlIK19J1FU99C+)iJ>0q^v^mij6%v5hLr00v@*%k2#!ZbQZ{}jcQ*UM}#@qSoaHu&dN;zsZ0LDt{T?Q6lQuFtq1Jz=og z&h|)2gs1Py7}mwvfIl7fM|HV4bOFl;I?lyn|C5ZkW<#DD{DUWpBZ~d@{nqAgZ^n96 znh2S2Kf0e%2e!P6kG}2J%l$7SRPsTI7RT=|B3tgWl@f*)y@Qs*ity0QFq``dGH+%z ziHAi+)+z$Dh2~(B9v9ygRF+x$d3m@WAhHgs6x>T3G{!W#L=v}l$+w^DIT2lLETtya z9a{BbckUL;BodrIU|{_>%vTH9nMd_fM*dI#ql{wUVa~PK(G**;l5_K8I5ajlz=R1E zQd2rBj9h(`H_&VE2dd(P%(%4RFz((0xi+SZ$P4?TZC=gtsW!Nw_MBUsj3DG(Ld>nF zUbA<4xrjTA!exwm_@`7a;ya_#sydiTtmKwS7E0p2M@8gxmMn|Duq9&1$uScY3Qj)I zD%$K#H+6r;Qwg9uaTT)ta-m`Fof6lD1ie0Q&V79FYl<85I4WYXoevf{z7Lu*Z@qZ* zg7tX{A6`j+%BpE)%{^J#nfv{ zMTVNQuTInwh$#8AcW301Z5Xc&+MbJ+bU;FzS>#W=3F_?Dg!vDnsNM?S7$K@7Bj>!K z>_C<*xj{{Q5vZ$(QF}^(Y;+vL3#cJ#Uo&yT1vA;3m+W3Z`6PpcwXH4KJ!WVxVp`M> z6hRpn?B!E{qPit<>b{A^vZE5piZZJ!X2CWm$j1Q>rVeSkHn9ix>Dy1XN|k@G_wlyT zuY07Tx8MsG0dILF%7RW}5d+1h0#&2w!zY*36we8jNY0(jh^7wZ1sdDe67Tslg8WWE z!eosPM)+HjO@=*ayYoj|@RGr6HsGQ=_uSGl{>id3k`*A%`sx3KoA~guT_gi@Ku5)~ zke%t_6xA(O3IC_37S~*>03tU@{H?Y5qn4)s8uE)|umgf!y?N`e-Wtf!Nz<8-XqQUb z8d+*rp@e98Wv<2fgF9s6P+MMvs}57x&>ma8MS6_(+9X-^)V$+?>}y!ooTU*IeDIkU z+fXiOUAOF2s(Tw~w+tP%3~PF+KpOEpn^-Ved4U7%m`mb>mCVp7hRXGzIyQO%;_oUN zE%z@d!A|qfXg@`k-&D5VrPf8fcUGyMS@Z^2^{Wf=;LLFQ1G`j7?x$GsXZp?J<@x7qOwlekC3@en za%6(mI5`m1ve*53%7-f>z5D$g(r}Y=XA}T!-b-W+g~km8mBi{SYaSMdF9-iNmYMqs zKQ&ef7rFIXjGEn(?fyH2(otKptMcU-V_7 z^P0UPLyAuC->>TRoGfh|N=Jn4k7#GlfzU&N7wscQcArVQxGl_Pe!83{g1?2N&v9^a%Ffom=TJ># zs&8-KJHKIWt;_^@t{z#sljV|AVTQ*HxunF7y#>bg;0(TQB-c$g*+T;U(0io#DK7ZY z&l+LnDk#lfPU#$u6}u9f$1(rt(WKydY}(6r z6pa`TjIBVZp%@36^f&W`5$6=-+4DjI!Z^u(O6>2cauZlVQzIl-M`q#`+PMld?_~L) zoa+u<=MeJoX}?|=DwIyOC1b|RBzgw-x~6Crk4JSS{BTdNp6E^DY&b4u3a~@jVm8gp zrJ5HTlPYE6KKO)J8iZfZXg(A}S6H_OmgWhbEgu2yZf!V6$%d7~%xF>$qGuohp86a^ z0o~BD z;w2(l$md`pC>Y|SZ(( z^7msax#vA2Z(Mx1FPcU+owfyb6k*^p+2bUtdt9k_nSRiJM3 zX)|L*aX!)T&GE#MU5{3Q$m%T@Re5o>ceayl3!3Q37O*8VC2{z$Qis7yOPzl-9pn`P z`d2=7r&_KOF!zD)blV%&!Rpz3;n+i6^N-S8%h(g3wYKcxV}QT8{}5~bn>zBQXv=}K zW^d?E$KzN2TkdDuhf80&mMQ$}BM#^tnG(j78S^LfwBPW%F%3w@_}893v*Dh{UxTn- zj}a%H%VPVlNVjdaIYMI*!!zV1e)JZ0>_WPc%cW@;MG*;^_b#hNc7Y_fT?OA+egOg=h11E4qQqh@~oU}UQFvvc7xdk&JC zQu8?CB}cJn7cWVf$RsVnHa3Ij7PwQwVpek^KPX(Ix3WnI z22scswu$Df-GDD=na`J=n@CeqTCLTRASN&KYeO`-;Tih#Bl5;_B}Qfoar?W3DUrfb%)!8^5=HS00$^WPjsG-JeILIf^$n@N(3B?R)Ee8n#{9 zRe-+|!LHiY@-UB3lz<4rhl!9QP2F|whLpcIjrD#q>&ZooN$MNzrVW01oq)QUrId9&`vAI}Gc z#&7|rq8?VLfYkmeeH*3L1*b1Ajb4fBI(aH^-B054LO}6$`;E1S?nzE}fAopRI>oL3 zy(-Kxe7*R95~61){|$|k$~yV*E#gTD0bl-SAm7_?G%0g}sB0^Jw^6g`nGLVSw>dtE zYvM!d%-F&SkLDLWYZ8}HDde`Z22k+t%_1frw9eSZqFz>GvdoVxKEd;~2b}a>`UPSC zJNA$kh`!1Z$}M?J5bRF2ey6f-j4=s-yZb%f7=RPqgp(s24%opJF%tv9KPm$!HEMx_ zDHDPH55GPb1{{gW5fKJwFP>4-Eq)nuJ0uJhG5u)rZu1RekSb3**gqPCtaTe2?KaR> z(V6sCm7$*CbjR7`k(oRaMt-6GOqy?VW|J=U2T>T=`C%i)vY3p&ZHru2uHdg)!+!B9 z5bO>|?1xCRfete^rRB$u&L(`}bZc)Li1V4s3K)D`-&s*PbSl(3`bc(9eWQH%lhtni zFO(Lu2izBN*(87+lr&ji+7e90%vQ^|vHUJ?jA3oQB0>=6BvMhoZp*~Onrzv0_m>eK zLVOZ^6_NK&OJ$9h5~0_u%P2{~e;s-PNv}&%UI3=`7+0j~hd;3siSE^&VQ6SK%PBA( zn1jkjqn>TDP2fD{NeXodg8kS(#cj=1dWv)_}Rw?2hV;33z z7!9a`90MOFmiEJpPHfdAN zTs2X#jU9ICpn?A160a)@+X@TA{5QVYLwVL&_FVh0e8m_0j}Lz4ibctc`%&m}{;l^k zvn;xm{H}3+LZ)i}q1cF!jUnau8>DOT$CwU()%YIh|tnG2~zwgGbRsp+9p7pSob3ALBbMn%m^+` zLNgV0UzLJb>Z=d(mfnK2LjF!Trq;9h?-dSOsvl*&^*8Rm`xDC^TpY|`rhrHjSJti@ zg16mD?g!OU;EuL1kG8TC8K1HJFrzv9Z6ABMhVKL2O z^no_B*B56gYXDM{pqCLg#W{Q%I zDhj*i@gS{a)2}Wj3^p?KX7k5>Ub3H_a)t`HMnq{C;8ytYe4?8OJ!T@*>4aqXG;?jT z#L+vBJECVg3gG;vJA_sm!*1u>54C&mT%hhMzGorj6%W?)RZ8q*UuEY{1;+(^3K z*{kuQ#P2sT?|g-^b``Hhl#9r~4{tjhTlb!TdaEV~z1iH0vX&2!Fqir7!6M^&aVXv6 z3x_%)PJs(yqu>fQcy3aYpnrfE?a`Uiz%L&i(_Vt(jKcjGy{)7{+?8QCuHf=)-*QQ9`@>p=1gPqOz$ggFhpe?zjxh2OHZC7+!{!@g zGFwm4@`R(U&8C5C*s65gDPrBZ*h!m6U2o&o`$dj%GI847_xBCgtrb&wYS&Ef6oKEI zl3f0yw0ybVV2nlQ(x$r(HL>>95$6k#Ev>bP_wm?Jd#1P2{MJ(`x15nZY^JTe>Yehk zq>YVx4fwjUPYHc%>}#~teYTu=!M9@M5;rz&xkVr`+R`)&HUO_V-t z)|de8Wq5t&DD-Xqb$0FPFtZa-789F6S>xj0ca-R7mNs)T-0qlnlpF#jBX!(#K{5LORa%Vs zos6GfXnX%jE{H=2TvOw#uDGo`75_5fmFn?Ku&I!7#rkosQ;)H&lJ;s%@R|Ki`8?(E zN8gZdA!Cns`~F;oyJELnd^qbp7GA4n-AX~7Ph;zrD}3#qqB8aMrTxuMG(#o2Z$qClA>LcVCWR{MQmjHUX7PeqlD7+^+bSt(40$(m9EI=!J2|gqpt20wUhN0@gsezOvQ1mG14( z0m4J0)vAciJ1yAOsk=`&gTv_Yt&*Ex*d-?h9wqhca(niYzkAjuK39qj6Tu(JOUD;&1SqaSA@x$x9X}Yul*OwPR~MT+Vl+1P#4A8CZp`+QpogY1`Og^7I@s(Y zaE&nXZ6n=m_4$Q($K=TnaVl(p+xJQBLe2wGo$n65_jPAB*c7N@bspJ6c}>!GIh?f`1%)!+r^E!^VUf>Ul<1CLDtlWJBQ-n!Z72QT{fhfEZx zDFL1AA3nGq|AL)r6@~gPYPNUZi2o&VezxE;EGbKOKVX8?syL)-#|=C{-u0r2^+VQ` zq=3Z~TfHUy%_mE|5K)R#m|3s5`0^9m*!UXmfMS(aGgIjaZ#?SG8sHS$`M*NAs$Fj0 zgBn5s{pv$r_sTg$@{_BgffJUNO*a@Uf0AB^8l6Y|KcM8;tVux5+R0=;4H$;2T$wKU z_HLArJk!Z-?sh#eF86Q_6~=C7M%PNO?y(w5T^4Ic2f_ZAD(t~n4C@&2v!6Kl{6Y7b(DHw zu_mkCI*(90e zH?t#$ftJ}&z{UmWO$lIR<&FBMKb+od>^hx(dr7=_=W^=g{@N`+slfc|V9oA|*H*zI z%0tF6hv)r(lZ&4?a+uL-FAd&`jvTxb3m91UflIBmKW?PE|IEyMlPmi7j8o5Q}B5<5tNBpj=g1tcM)SKOk52V*)smo#!2x;?&8AmeZ!o;af2J zq95)3b1MQzJzC6{#Pt^2EC606g0b$|NgRPgG(hv7C)IjmWW&l2zz7U-rTm~(n^Yv? zzPkxBn)`O#gUWm!g_cDo5l3>GE^~)Ap4-8syMKNtsrHqYF;Pbl_XASsMX;g4b(+cd z7Cj^T_&XPQ$uW#iqg>0xBc>rAOxG!MQ`0pBu;t)4JZ0+weDGl|b4o#@@Vpy$Kc664 zOZ2pLtcdAzn6ddTFymAQy`foJDu7_d@q_NFs zs||f_eV0**s+X^wlYrWoh@ifXW9!BJ<<7s9H?ad z^_%#k9I3RA&q~x?1~-_HJnIL^YBoxxuJAfHX1sI5P9PZS5y@Y z>V8i=IgxgFxwK)Nm{WC0>^pn7qBId~FSRS(Ls>P5=O2EFl8nb-NlHL0;qF}3K0Q`4 zPmM?240OA+bd@61N8YjmVXUS9C<$iY78}FHRZEQ*{u;UHmdxicOZ0|80n(lu#OMca zwjWnN!OCAvoTQka0yOvdON+p%8V^7s{;PvN5#_IK$>BGJjoA3GPJ^sE6p+wW=dD%& z;xTL_2h{xNmQKZI)x7QnDK{1+jf8>T&DfYT4len{FQh7`gi!0pzh;XnZ{pNL(5&Kp zTk=D(Al6ApEI-+4koonZuSe!pG?wn5PzolWlggnO3>4QR>FK$h1EyE2qQpctp%t$g zleJO+W}qa6>Eg6hW-)4dV*Ef}xQKFa&q9kG zb}#8dEb7!7|MjXO@KPiS5vGbiBE(PAWbIUj0Y109U60p>)DZ|<PAZD72`0qj{Hoqd0od!IsQ;re(iL3X8WkaKv{_q z`?KrI4#%vu1Id!cYEx8#3AbtdhEt@sf<&o!6B`I9p%XGEvE4TInCwXkXQ&E)ga!AC z)7Dgfw*Np%sP<_2V4GKNEP$r1#u^?M!kdXb36_CbEDlqdH~vDqs`$nF47GOD&>+G2 z5#sfDRW%xUZw1Gz59%evK^d$Zh_vg3&d__jke2Tq=?)-#Stu*!O)pB1zF2$wN(aD` zMYrRKpa87hRXLRA^rPX!c=^)DP|N)!3P)=Kj~eNTTy?A;U<2M=x@{-mu%#-ZIlX;$>)f zM39XyhM>mTDF zV;Si_;IBz>1wDAj5%YoK{07+}^U#qfj|23WF?7wHdA;4efrHNzk+gExFM{*2Q&|rD z3ojq4Z}|JFSZn4@d5`5f`_~lx*K5I$Dt#c+MkxsrwRIql*5%uMOdOfK$!Vh+i;C#g zVknjDh4i-lVI(Q4<3VQe>CF`u5??}#a(0jPoJ_gj^N2$ZYRf)85pE-4 zS6xcE3ML_1253XZ_8F(7`{m#xb6KgEQDonGpH6fA3rSj%NlN`8^NtFw&&;0168p#L z^DR}siWwMni?8FSaN!jL;f0IzVa*1ak_U22MS113B49N}C`^8!7r1;M4Jx& z#j`(?dD<4RGeQegx}xy1tJyvD9T6J6Vyha3!yULMqtZ*~h1g7)HXWB;fu(O1KWD`h z>+ez10-Rs39D*nY{&V#|AT#z;T>P_RcW6PE4S|!lW`5}43SxJ*3sZ-zME34OkmiQP zyP@9*<#`P6I$T22Aw|NGy~3)MiK3;~G+KO1C7YBVMl^gFo; zT8>SBF*!L5Y#Pu(-wJSi-X6rC=s(-zlfF#A_T+0yRAd_^pz6}u`qY4FSjy;oD4H}v zz1>IKuN*SeSWbyqZFyMK{gINlnk6=NRilv~+Kn*njh#^zn5&&f_pN39B5El9R^6nBI`rP%`HkYfIGZ$YpP{&3mzZe2N| zgy7hpI{!Xj)t$~eqjKa)B4I}+4 zw+0{At_U?zVEVtkH;^^#Ra1v7``2P6QoG^4R@X9ea?|r87~4sD7}~8>JpRY@xr$1b#E`kW zrBUYt>o}Zng;G^d(TmPdDT>JXeI|+wEN9ZH&+0Z~H3$umIt2iUh(>yP<;y69u_Kw?DyHYRjhiD)Y zaT!#E6G3*%d1@}BqwK-Yr0SPvpHgXBfbEOefe-jV=Fzn<^X}NXO9t!?E;v;?qRXqi zADL0aMf`|%ry4|>m3AdsIZT$MvE69}NZ&`2Aay+W4usyc+#LwU{Y0?CS%(rvu~ows zM_>st&{T$z+LWPCF`L{gXx8vZ45YaG=<&s5@qU>WD1^&{ud?8O9Cb4tY(|uOx_EzQ zrDnKWYFPd?t&r!9rsbd`jYcF<&x&rsSE(3mF7nU+I3V}#zqa8-NPXD;IWS%Q4=n@J zS*h}l@XQtM);)gW;2!)0{Ys{Fqqwh94t+6{CK@;#Qly&-*r>HAlw1knSAnc|*S@ET z4Qpo$8zAziiP{nimv=CfiDyuam z&~C0etSf)%yky-V*uW_N$gKax6DlwcrRk*umn%RPYq}gnAD0uY5}A(I+1574r(t~r zfMV#QNkmxe_-l=O0l6TP&AF$~R5x5dSmQ7*s!dE^=9^*mRi;~Oz`=%JdzD}?arDFB z40+m!2YPu^Rsvc74xj0lZnOPdJngV_S5}*n!{&AqZ0|_=|C{Ro21YDWlPHEVFQu)I zl!fvFOa*vR{vBegp6S>`&n4+YN?2ITh8^dYVGyT9x7&r^gOa`nj(EORf;7(er8MTj zm)}Pa#m59%!B|wx%jFjJ)8TsKtx%e$5ZZxD ze8VW+;_wlZ~E0zR;6SGzLl<50B^ zTx-~V@kcKiU5gy2c;Mz7D-kr%P-Otl^V))oGFmASmBKg8Ai1?tDxj% zD4M=sa5FMYpZ+sEEi&qk3wn5PG_&{_0{~vfc&V5#(mslCmc?%9G1@tpPO91ZY~4tN zUjNtd`g-k)$yF%TGweqjDXqp02V=KV9QyMG6)3|eSC9e8)h_h*r?)@izPo^MU$ZYL zcI`)wi2=WXJ;!9qbEZStUTDUU#K;P&ucC1I047R})|f!7Va?CSp&cVImmrtVUC@2U zABw^KQ!jBpMAfc3=o=`*iaB5jo5_rKpqJr~;w;az=yFNtKzR^v=;9SEhkF)};LpDH zZ8+1?^nbB%*~gS+lYu(cCnEPSug3L~{AaaNurt!W1wbZlrA(hr4s2-o$-M+ zP8Q+igZFQ2F>n>_lKy@wxz9eHNWU+;P;0Mq%~940%0uRgMJVKm?dwF5wRj3@edu=) zt8?dU6mk#!g;KcM`{{oOCTzeU%=g$>riwnQ)GOApT9!`y zUZlR!w_m=Vbh*o z#y1t(rC+48auaw2k=2Q-o6obBHq4TleC9i_Bbka-gsnZm1jW{+jz?>gPil$xRcQf5 zSA92N2_3==75ri0xVq1$AJ>zG%OLW<@hB!d9HclZO;OB=0*WK|z>$cP z>UkX5K-?SAT&RFzu3TAZ;l_zLvgN>Sx$0^DUfzF!gX8+%_jP|h=V>F}TGha&wSX2j zs`@4W#`J{LUkW{lIczjN0IwX_kKtU#MNeqzdtT~m1An-@ayRv5rwl-*iTEX4duC~D zd%5Rcx5x))!Cg(Z{tis&3BXlwSM=UDJ)X*3{69g90SRxZ(EjS2`{%K2+mUuKHO(mE z`t{Eq`(wh{T^(EsRaH@9e4}cC6tlH7v$`=O-LT)zQ~pB+p;LAyag28vzkgr*uMhAb z3pY#c|Be07848PD4WfKZeG6&TZq*#F$m4FB*V?oH9;|vjn2p2gmP>u{NPWjse`Cwt zXSaAfZ8dZnn=is~Jn>tzZqB44d!h5LVQ-fJY4%=;^}8fS%xpf2ej2Kj{TGW7Ork4>fweI3b zGh3l-!Wt+8RYDx<1vODgxjoDg+8d3HL?hu57?k>h;`j^Z1P#VVg}*P!x^|q?HMa-= zyiwu_El*wrB!C7$lzDr|n%|D=wAbl5fE;r(ypJp9@U|0Axi4h&B)G`q+QtdF%~!;} zYGXT#8;t1cdd&0Pxv94YE-MOLW<)sHkRq*O3S>WUYta-SOba=oM0vRJHfq;-O}R5c zV0z`kl^gYsmm0eN%}=D;WUP4_&X-E3Bm!q{)Mh)+g4Y$eL3{NO!3R%Qa^c#g%GMF&WwpG=PaH+4s^hEG+9Ow-aOrvD%6{(IO8?7rg)FCdZ8Xjoq(#MnKFuCjU+@t?PJ5$SBng*R ztNy?uoIVxY;o0p*N`D)a@Os@YsOX*4AI%8Q@->j-r&$)ne(*o(yy;xsVfntw{jpHj zx?XCPe13EG2oSwq?s9jJU8$r7qO@e>-wqxFvIw5K&+Lu<(f?Y$mf24}4!j{FSuu!~ zw=h=}vKNI+{6tW>wdu$-w_lLr=1Srf0bQNfFo&rgt2ZCyNrNicIw`O9-^-8bM5T7c zHr}?vyx#CSXDp{*Y8ZoR*=ivEJYO6S3mqIyxGhRV7x3>3Nw&DV!!ho z&`gw+{*Rhns26+Pj%>J3#s&!qz8LVDF7M2{l#^wpBt*v9HdhDVI?dBqcJCIYe>P&% zLDug>S7aoKrtMz4xI7A+dMMXfJsX&CwaJ@}?Ld5}&XHjSc1)LrPSWWww!%vi3^^~R z9W#y;@3hq0sjl*mDyvJal)gCJxLxf-Rudq1P5l{v+aer2V+9Q9=n3meINfA|&s38` zy9qAFfi&8E&NMBX(k3{lgtD`>s_zR%U}f9VkYml}(*ph-4IMkf^f+N>iX`o$(`1EF z11%VaAI#Fb(X{Y;-xz70vf5j_%{|Ay2yppOJN*Xu#;|`c&hr+|R>w*Ky!0}0Iv~B? z8Y$J=ShjSWSBM-Fi=(>ti`(-^HVU0*I=z2B{|y|cDsMtjIkUQ-A1Fi*Ee?Eb*w9Ho z2eVe-bj}I{cCrV;8txw_EV4?5s20-sMtHjuSG|w}C}*(jH?qskg@=jWY$F+3wp0t# zUilb~?UbIkhg>EA09uMm@07%qf=olt{jx?r$pF(S7o}to!|w{sbrw>c7&M(OCt^s| z>aP*L>OGJ8Zw=hX5Wap_!B})iLM(;X`Qv78`59@QhG|TNzBS76H~Ve8NSoW z8lmKLeDSz9Rp1K+DdE_6%i3%-&T6!G>ydrNQT=&%7G|ivIB5t(wNft5`^0JH@MwoZ zAPm3JTl{#MN^hzyfPbplU%cggV~bxS$h_k>0efRW zu(&lxoo7w5T9Ak!1U5T$_5=6JW(4=HZS~4+$mAQ+@Wm*Rn4`FB7klRhk0tfegqa)8 zk{QdeV=M6I1PSGbf`gP-k1nvYYTHcBC|$tO8*Nwkr$|(YkxNe(th4foTMA5M*^pD8 zoo%b6nwGO<0PYWwGed>kF7k$x1-?}-+x(PBer^eEpKAQ!O>~ymzyh}4mt-IcMtUXJ_eJN`jfOY+Sr`r$^H!nnd&{aZLq} zH=GoAD5f0=CDW_U55J$;nOjY&`66&ci*mD0Y!QL;JnD&2J5P->nTKFv(QmtZHY)9n zrjs$Y##ZQtV_(hzk|+kGJ$UaS;H(X@%`T18%zD*9477topo+?^)=!&+>IbfP_a=A_2Q~LNOyZM%hnXt}f!S;V{E)<^Ju(N-EJi75) z#=V;wJNS@x>_V3h%-fHQe4eAU`Ru;ikXFgrafyL;{&LXVV;24agS6*DYtiub2^VJ+ z{jmgb!NQu9P%fM-G+@AH9iIK>(%F`|mGqbB%Suwr7**jK--x9yz#YBuGEwbEx`S9a z!Go0Isb^WR0UwoQM)y;>mjStN;Ffb(eCCiqG&5RNJcVJl@(XEBjl6YY#V7CNRHe?@ z!Rx6Jtx|GE@Y^khziQgx=dn5QZnr;A57yv$$pI@k7mgawD#nQ(auB1pf*z{4din&@ z17U2{W&z#6ms-hYl5fTtU6e8K?WUbMuCGjZ5m>*Bk68Rpj*N`!@;7_JsYUkoqjgCu z(vhzRc=jO49zz9hQx2*Zd4(u-5-ajL_#2W0*1QbXX0UiR7N~T7^h)rlBs_l>I)5iU{vB?a>YVo+r4Sr{TUMLUi{lERCtxM$IlSz#8EKJ4& zZvZGvgnL$v6K<}@PPGJC8lSB*y^nTm$aQ?UMn)k&A&omX%-{62Y4>Ruuo82*8LzNS zs2F@KgnM(Y$<6pZ<TlWUIgmgQP!iY-VErhd=63AJZg|9BlD_S~& zq^RPWR{Lt4tc#wxWlj6I})WF2r(gemW{ zus>5k8GY!{*&s3~@4)7E5+tF@Y289^!yaw|Ct;?tqRE)LY;giH*1f^>k;IhfNym^1 zT`W^wO?iUGuohY~vsvE9AieXKVgfdSlD;`mCy9WfPl(hR((`EvCBs8{f{npyxMxGg zW+dfKaBeFKd0?bJ^E9Qq5k1t^lMwKpgt(wY{KuMZ2|4jziB+K8x;(tH)A??rB|j|L zUUO#qNO6$&_tqNsk9wO?qd3APGWES2^Zg)p*04T7 z`<(4%vkzQ)-|^TsEb|hHbl{Qq^(Rg~KP;l#>sMKt07hXDbU%RSh|X`{(UFzke`7PW zZs<1+-zpn89cOw86g-xLL0Cc5Wc^u7F$02~cMRk<^)8w+qYTTE>&7TS0_bf z);uROGrL9J{t)XWT9y@xC$FRa7v-D9Tlu^2hrSX^ohRo{h}`8+f&12d)jQ{~2DnGL z3YY%lPTKSGQFULukaeg()s3TuppWZK)fj5wkGy|kKB7nfW%gRWIoS#Y{cS2L>hv}; z$HC^u!@scwpNqb^N5S~o zQ+Y@9TH9≧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

$MLw}jr-C?-v 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 G_J07$TNG6Q literal 0 HcmV?d00001 diff --git a/src/ui/src/assets/images/nature-sky-night-milky-way.jpeg b/src/ui/src/assets/images/nature-sky-night-milky-way.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b5ac7193382c5bc6bf890633d1606270f701d58c GIT binary patch literal 788334 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 $}g`KY0 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 z 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%0DHhfJi*ZG?D1` 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,zdeQe?hm*J~;LLE3mR?D*FhuM{l0JJ1WJ9qN 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

iOGo%DglPe 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 z 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%0Ap}KrF9yNFLPRusqOG^47@pq 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 literal 0 HcmV?d00001 diff --git a/src/ui/src/assets/main.css b/src/ui/src/assets/main.css new file mode 100644 index 00000000..4400655f --- /dev/null +++ b/src/ui/src/assets/main.css @@ -0,0 +1,5 @@ +@import '@/assets/tailwind/_base.css'; +@import '@/assets/tailwind/_components.css'; +@import '@/assets/tailwind/_utilities.css'; +@import '@/assets/_app.css'; +@import '@/assets/_progress.css'; diff --git a/src/ui/src/assets/tailwind/_base.css b/src/ui/src/assets/tailwind/_base.css new file mode 100644 index 00000000..2f02db53 --- /dev/null +++ b/src/ui/src/assets/tailwind/_base.css @@ -0,0 +1 @@ +@tailwind base; diff --git a/src/ui/src/assets/tailwind/_components.css b/src/ui/src/assets/tailwind/_components.css new file mode 100644 index 00000000..020aabaf --- /dev/null +++ b/src/ui/src/assets/tailwind/_components.css @@ -0,0 +1 @@ +@tailwind components; diff --git a/src/ui/src/assets/tailwind/_utilities.css b/src/ui/src/assets/tailwind/_utilities.css new file mode 100644 index 00000000..65dd5f63 --- /dev/null +++ b/src/ui/src/assets/tailwind/_utilities.css @@ -0,0 +1 @@ +@tailwind utilities; diff --git a/src/ui/src/components/ActionPanel.vue b/src/ui/src/components/ActionPanel.vue new file mode 100644 index 00000000..e4f0c60a --- /dev/null +++ b/src/ui/src/components/ActionPanel.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/ui/src/components/ApplicationLogo.vue b/src/ui/src/components/ApplicationLogo.vue new file mode 100644 index 00000000..f1902add --- /dev/null +++ b/src/ui/src/components/ApplicationLogo.vue @@ -0,0 +1,173 @@ + diff --git a/src/ui/src/components/ConfirmationModal.vue b/src/ui/src/components/ConfirmationModal.vue new file mode 100644 index 00000000..5802c532 --- /dev/null +++ b/src/ui/src/components/ConfirmationModal.vue @@ -0,0 +1,59 @@ + + diff --git a/src/ui/src/components/ConfirmsPassword.vue b/src/ui/src/components/ConfirmsPassword.vue new file mode 100644 index 00000000..42bfd990 --- /dev/null +++ b/src/ui/src/components/ConfirmsPassword.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/ui/src/components/DangerButton.vue b/src/ui/src/components/DangerButton.vue new file mode 100644 index 00000000..fcb00b1e --- /dev/null +++ b/src/ui/src/components/DangerButton.vue @@ -0,0 +1,26 @@ + + diff --git a/src/ui/src/components/DialogModal.vue b/src/ui/src/components/DialogModal.vue new file mode 100644 index 00000000..8ebcc013 --- /dev/null +++ b/src/ui/src/components/DialogModal.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/ui/src/components/FlashMessage.vue b/src/ui/src/components/FlashMessage.vue new file mode 100644 index 00000000..29c1d8af --- /dev/null +++ b/src/ui/src/components/FlashMessage.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/ui/src/components/FormPanel.vue b/src/ui/src/components/FormPanel.vue new file mode 100644 index 00000000..0b7932aa --- /dev/null +++ b/src/ui/src/components/FormPanel.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/ui/src/components/FormSectionTitle.vue b/src/ui/src/components/FormSectionTitle.vue new file mode 100644 index 00000000..5a502d36 --- /dev/null +++ b/src/ui/src/components/FormSectionTitle.vue @@ -0,0 +1,17 @@ + diff --git a/src/ui/src/components/Modal.vue b/src/ui/src/components/Modal.vue new file mode 100644 index 00000000..39e8b976 --- /dev/null +++ b/src/ui/src/components/Modal.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/ui/src/components/PageFooter.vue b/src/ui/src/components/PageFooter.vue new file mode 100644 index 00000000..50dfd22f --- /dev/null +++ b/src/ui/src/components/PageFooter.vue @@ -0,0 +1,4 @@ + + diff --git a/src/ui/src/components/PageHeader.vue b/src/ui/src/components/PageHeader.vue new file mode 100644 index 00000000..bc16730e --- /dev/null +++ b/src/ui/src/components/PageHeader.vue @@ -0,0 +1,19 @@ + + diff --git a/src/ui/src/components/PanelTitle.vue b/src/ui/src/components/PanelTitle.vue new file mode 100644 index 00000000..ec17e14b --- /dev/null +++ b/src/ui/src/components/PanelTitle.vue @@ -0,0 +1,19 @@ + diff --git a/src/ui/src/components/PrimaryButton.vue b/src/ui/src/components/PrimaryButton.vue new file mode 100644 index 00000000..95abd1f2 --- /dev/null +++ b/src/ui/src/components/PrimaryButton.vue @@ -0,0 +1,26 @@ + + diff --git a/src/ui/src/components/RouterViewTransition.vue b/src/ui/src/components/RouterViewTransition.vue new file mode 100644 index 00000000..44363389 --- /dev/null +++ b/src/ui/src/components/RouterViewTransition.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/ui/src/components/SecondaryButton.vue b/src/ui/src/components/SecondaryButton.vue new file mode 100644 index 00000000..393cd110 --- /dev/null +++ b/src/ui/src/components/SecondaryButton.vue @@ -0,0 +1,26 @@ + + diff --git a/src/ui/src/components/SectionBorder.vue b/src/ui/src/components/SectionBorder.vue new file mode 100644 index 00000000..707f5666 --- /dev/null +++ b/src/ui/src/components/SectionBorder.vue @@ -0,0 +1,7 @@ + diff --git a/src/ui/src/components/SectionTitle.vue b/src/ui/src/components/SectionTitle.vue new file mode 100644 index 00000000..a54c08eb --- /dev/null +++ b/src/ui/src/components/SectionTitle.vue @@ -0,0 +1,17 @@ + diff --git a/src/ui/src/components/TextInput.vue b/src/ui/src/components/TextInput.vue new file mode 100644 index 00000000..151fbd6a --- /dev/null +++ b/src/ui/src/components/TextInput.vue @@ -0,0 +1,68 @@ + + +