diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..93e08a5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +*/bin +*/obj +.dockerignore +.env +.git +.gitignore +.vs +.vscode +**/.toolstarget +.idea \ No newline at end of file diff --git a/.gitignore b/.gitignore index 21d9bca..449f1de 100644 --- a/.gitignore +++ b/.gitignore @@ -431,3 +431,15 @@ $RECYCLE.BIN/ !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json +sts/MedicalPhysicsIdentity/tempkey.jwk + +# ignore appsettings configuration files +**/appsettings.[Dd]evelopment.json +**/appsettings.[Ss]taging.json +**/appsettings.[Pp]roduction.json +src/WebUI/orra.db +src/WebUI/orra.db-shm +.gitignore +src/WebUI/orra.db-wal +tests/Application.IntegrationTests/appsettings.json +src/Infrastructure/Persistence/UserAccountSeed.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..55bc05e --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,36 @@ +{ + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "version": "0.2.0", + "configurations": [ + { + "name": ".NET Core Launch (web)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/src/WebUI/bin/Debug/net5.0/ORRAS.WebUI.dll", + "args": [], + "cwd": "${workspaceFolder}/src/WebUI", + "stopAtEntry": false, + // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser + "serverReadyAction": { + "action": "openExternally", + "pattern": "\\bNow listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5689562 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,25 @@ +{ + "files.exclude": { + "**/bin": true, + "**/obj": true + }, + "sqltools.connections": [ + { + "previewLimit": 50, + "driver": "SQLite", + "name": "orra_sqllite", + "database": "${workspaceFolder:ORRA_SPA}/src/WebUI/orra.db" + }, + { + "previewLimit": 50, + "server": "localhost", + "port": 5432, + "askForPassword": true, + "driver": "PostgreSQL", + "database": "ORRA", + "name": "ORRA", + "username": "postgres" + } + ], + "dotnet-test-explorer.testProjectPath": "**/*Tests.csproj" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..4c7bb2a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/src/WebUI/WebUI.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/src/WebUI/WebUI.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/src/WebUI/WebUI.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/ORRAS.sln b/ORRAS.sln new file mode 100644 index 0000000..ba81516 --- /dev/null +++ b/ORRAS.sln @@ -0,0 +1,131 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{76FB5926-609B-414B-A335-67B9793C9469}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application", "src\Application\Application.csproj", "{DC4450EB-511B-4E47-835B-E488A423F197}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain", "src\Domain\Domain.csproj", "{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure", "src\Infrastructure\Infrastructure.csproj", "{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebUI", "src\WebUI\WebUI.csproj", "{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2D4BF6AF-0BB3-4183-888F-D7DD11143E63}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application.IntegrationTests", "tests\Application.IntegrationTests\Application.IntegrationTests.csproj", "{8FC674CA-E504-48F5-8849-361FAE36BAA9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application.UnitTests", "tests\Application.UnitTests\Application.UnitTests.csproj", "{C385A757-2CCB-4752-A10E-E05038976F28}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain.UnitTests", "tests\Domain.UnitTests\Domain.UnitTests.csproj", "{DB788D78-FDC2-4490-8CF8-DD88E371239A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x64.ActiveCfg = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x64.Build.0 = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x86.ActiveCfg = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x86.Build.0 = Debug|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|Any CPU.Build.0 = Release|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|x64.ActiveCfg = Release|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|x64.Build.0 = Release|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|x86.ActiveCfg = Release|Any CPU + {DC4450EB-511B-4E47-835B-E488A423F197}.Release|x86.Build.0 = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x64.ActiveCfg = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x64.Build.0 = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x86.ActiveCfg = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x86.Build.0 = Debug|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|Any CPU.Build.0 = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x64.ActiveCfg = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x64.Build.0 = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x86.ActiveCfg = Release|Any CPU + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x86.Build.0 = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x64.Build.0 = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x86.Build.0 = Debug|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|Any CPU.Build.0 = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x64.ActiveCfg = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x64.Build.0 = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x86.ActiveCfg = Release|Any CPU + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x86.Build.0 = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x64.ActiveCfg = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x64.Build.0 = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x86.ActiveCfg = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x86.Build.0 = Debug|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|Any CPU.Build.0 = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x64.ActiveCfg = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x64.Build.0 = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x86.ActiveCfg = Release|Any CPU + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x86.Build.0 = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x64.ActiveCfg = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x64.Build.0 = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x86.ActiveCfg = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x86.Build.0 = Debug|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|Any CPU.Build.0 = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x64.ActiveCfg = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x64.Build.0 = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x86.ActiveCfg = Release|Any CPU + {8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x86.Build.0 = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x64.ActiveCfg = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x64.Build.0 = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x86.ActiveCfg = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x86.Build.0 = Debug|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|Any CPU.Build.0 = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|x64.ActiveCfg = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|x64.Build.0 = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|x86.ActiveCfg = Release|Any CPU + {C385A757-2CCB-4752-A10E-E05038976F28}.Release|x86.Build.0 = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x64.Build.0 = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x86.Build.0 = Debug|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|Any CPU.Build.0 = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x64.ActiveCfg = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x64.Build.0 = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x86.ActiveCfg = Release|Any CPU + {DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {DC4450EB-511B-4E47-835B-E488A423F197} = {76FB5926-609B-414B-A335-67B9793C9469} + {14FA4301-58F2-4BE2-9030-CAD4B3957DF1} = {76FB5926-609B-414B-A335-67B9793C9469} + {F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4} = {76FB5926-609B-414B-A335-67B9793C9469} + {3332F707-8F5F-4CF9-B0AF-0DB2BA095C15} = {76FB5926-609B-414B-A335-67B9793C9469} + {8FC674CA-E504-48F5-8849-361FAE36BAA9} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63} + {C385A757-2CCB-4752-A10E-E05038976F28} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63} + {DB788D78-FDC2-4490-8CF8-DD88E371239A} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md index 65da645..33549cb 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,15 @@ A software development project to re-design and build a replacement system for the current Oxford Research Radiation Assurance (ORRA) software system used for the coordination and management of clinical governance and technical assurance activities undertaken at the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures. -The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients. -It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share. +### Current ORRA System -This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product. +The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients. It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share. + +![Current ORRA System](docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg) -## Tools being used +## Project Technical Stack + +This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product. The solution will be built with: @@ -33,12 +36,12 @@ The solution will be built with: - Docker for containerization of App, Databases, and STS -Concepts/Design Patterns: +### Concepts/Design Patterns: - CQRS ( Command Query Responsibility Segregation) Pattern - Mediator Pattern -## Git Workflow +## Project Git Workflow This is mostly a Solo project, but the structure of this repository will follow some best practices in terms of Git Flow. This repository is divided into three main parts/branches: diff --git a/docs/README.md b/docs/README.md index 4e02f5a..e4b891f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,33 +1,50 @@ -# Oxford Research Radiation Assurance (ORRA) Single Page Application (SPA) +# Oxford Research Radiation Assurance Service (ORRAS) -_MSc Clinical Science (Clinical Bioinformatics Physical Sciences) Research Project_ +:blue_book:_MSc Clinical Science (Clinical Bioinformatics Physical Sciences) Research Project_ -This is a project to re-design and build a replacement for the current ORRA system used for the coordination and management of many clinical governance and technical assurance activities that must be undertaken across the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures. +:pencil2: **Project Author:** [_Daniel Bowdrey-Roberts_](](https://github.com/D-BowdreyR) -The current ORRA application was built on VB6 UI/Application with dependencies installed onto Windows only clients. It runs from a internally hosted file share and connects to an MS Access Database for for data persistence, that is hosted on the same file share. +:scroll: Copyright Notice: _This repository and its content is Copyright © 2021 Oxford University NHS Foundation Trust_ -This re-designed system will utilise modern web frameworks and development processes to produce a scalable, supportable and extensible system. +[GitHub Licensing Terms](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository#choosing-the-right-license) + +## About This Project + +A software development project to re-design and build a replacement system for the current Oxford Research Radiation Assurance (ORRA) software system used for the coordination and management of clinical governance and technical assurance activities undertaken at the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures. + +### Current ORRA System + +The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients. It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share. + +![Current ORRA System](/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg) + +## Project Technical Stack + +This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product. The solution will be built with: -- SPA Backend: ASP.NET Core API -- SPA Frontend: React.js -- ORM: - Entity Framework Core -- RDMS: (yet to be decided) either: - - MySQL - - MSSQL -- Authen/Author: Custom Built Security Token Service (STS) using IdentityServer4 Framework - - Utilising OAuth and OpenID Connect Protocols +- Single Page Application (SPA) Backend: ASP.NET Core API (.Net 5) +- Single Page Application (SPA) Frontend: React.js +- Object Relational Mapper (ORM): - Entity Framework Core +- Relational Database Management System (RDMS): PostgreSQL + +- Authentication /Authorization: + - utilising a OAuth 2.0 and OpenID Connect Web Security Protocols + - JWT Tokens + - with a view to using a custom Built Security Token Service (STS) using IdentityServer4 Framework + - Docker for containerization of App, Databases, and STS -Concepts/Design Patterns: +### Concepts/Design Patterns: - CQRS ( Command Query Responsibility Segregation) Pattern - Mediator Pattern -## Git Workflow +## Project Git Workflow -This is mostly a Solo project, but the structure of this repo will follow some best practices in terms of Git Flow. This repo is divided into three main parts/branches: +This is mostly a Solo project, but the structure of this repository will follow some best practices in terms of Git Flow. +This repository is divided into three main parts/branches: 1. Main and origin (remote) 2. Develop diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 3cc751b..960a412 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -1,2 +1,6 @@ -* [Home](/) \ No newline at end of file +* [Home](/) + +* [User Docs](/userdocs/) + +* [Technical Docs](/technicaldocs/) \ No newline at end of file diff --git a/docs/technicaldocs/README.md b/docs/technicaldocs/README.md new file mode 100644 index 0000000..82380a2 --- /dev/null +++ b/docs/technicaldocs/README.md @@ -0,0 +1 @@ +# Technical Documentation \ No newline at end of file diff --git a/docs/technicaldocs/_sidebar.md b/docs/technicaldocs/_sidebar.md new file mode 100644 index 0000000..e58db76 --- /dev/null +++ b/docs/technicaldocs/_sidebar.md @@ -0,0 +1,11 @@ + +* [Home](/) + + * [Technical Docs](/technicaldocs/) + * [Design](/technicaldocs/design/) + * [Features](/technicaldocs/design/features/) + * [Assurance Request](/technicaldocs/design/features/AssuranceRequest/) + * [Feature 2]() + * [Feature 3]() + + * [Quality Assurance](/technicaldocs/qualityassurance/) \ No newline at end of file diff --git a/docs/technicaldocs/design/README.md b/docs/technicaldocs/design/README.md new file mode 100644 index 0000000..25096f2 --- /dev/null +++ b/docs/technicaldocs/design/README.md @@ -0,0 +1,64 @@ +# Design Specification and Technical Design Decisions + +These pages detail the design of ORRAS in several difference perspectives + +## High Level Design + +### Clean Architecture + +Developed by Robert C. Martin in 2017, as a synthesis of several other architectures. It promotes the use of dependency inversion to build boundaries between high-level and low-level components. The result is an architecture where all software dependencies point inward to the core business rules, outer details act like "plug-ins" that are easily swappable. This architecture is independent of frameworks, UI and database, and is highly testable. + +![Clean Architecture Cone Diagram](../diagrams/Architecture/CleanArchCone.drawio.svg) + + +#### Compared to Traditional Architecture + +In traditional tiered architecture all dependencies point to the database and so if the database schema or the database itself changes so must the layers that depend on it. Whereas in Clean Architecture all dependencies point inward towards the business rules that rarely change, all other layers are treated as details or implementations of the functions that the business rule require. + +![Traditional Tiered vs Clean Architecture](../diagrams/Architecture/CleanArch_Narch_Comparision.drawio.svg) + +### ORRAS System Level Design + +The current prototype design is a single page application comprising of a .NET 5 Web API backend and a client frontend design with React.js +The design follows RESTful API design; using HTTP verbs GET, POST, PUT, PATCH and DELETE to communicate between client to the backend in a stateless way. +This means client and backend can be developed separately with only the knowledge of how to send and receive http requests and to which API endpoint. + + +![ORRAS Single Page Application Design](../diagrams/Architecture/ProposedSystemPhysicalArch.drawio.svg) + +### ORRAS Project Level Design + + +## Low Level Design + +- Use Cases +- Features / User Stories + +## Design Patterns + +### Command Query Responsibility Separation (CQRS) + +### Mediator Pattern + + Jimmy Bogard's MediatR package + +### CQRS and Mediator together + +allows the inversion of dependency, the control flow + +#### Validation of Requests sent to APIs + +We do not want dirty/non-conforming requests being passed to the backend interacting with other parts of our code or persisted to database. This can risk the integrity of the data in the database and increase the likelihood of invalid values/data being used by other parts of the system, which could well result in exceptions, that if are not handled correctly will cause errors. +The Validation of Requests made to the API from the Client is a cross-cutting concern, in other words no matter what request is being handled, we are likely to want to validate it first before doing anything else with it. + +We can take advantage of the mediator patten by adding some behaviour to the request pipeline to handle exceptions and return error messages to the client. + +A library called FluentValidations can help with this. + +It allows us to create Validators for each Query or Command and then inject a checking behaviour into the request pipeline that will ensure requests confirm to pre-defined constraints (definition of valid) + +by doing this we can control what http response status code is returned with our exception meaning for example, a 404 Not Found is returned for an exception where the particular resource is not found, rather than returning a less useful 500 internal server error. + +#### Logging of Requests + +logging is another common concern that is cross-cutting - we want to log when things happen and when errors / exceptions ocurr in the program. in the same way we can inject logging behavior into our request pipeline using the mediator pattern diff --git a/docs/technicaldocs/design/_sidebar.md b/docs/technicaldocs/design/_sidebar.md new file mode 100644 index 0000000..90b5b39 --- /dev/null +++ b/docs/technicaldocs/design/_sidebar.md @@ -0,0 +1,9 @@ + +* [Home](/) + * [Design](/technicaldocs/design/) + + --- + * [Features](/technicaldocs/design/features/) + * [Study Assurance Requests](/technicaldocs/design/features/AssuranceRequest/) + * [Feature 2]() + diff --git a/docs/technicaldocs/design/features/AssuranceRequest/DataRequiredForRequest.md b/docs/technicaldocs/design/features/AssuranceRequest/DataRequiredForRequest.md new file mode 100644 index 0000000..6008c9d --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/DataRequiredForRequest.md @@ -0,0 +1,130 @@ +# Data required when a assurance request is made + +Meta Data Regarding Request + +- Creator (user id) +- timedate of creation +- timedate of submission + +## What must we know / ask from the requestor/service user? + + +### Type of Approval being requested + +Currently these are called: + +1. **National Approval** (marked as RRA on the system), this is where we also create a radiation risk assessment. Could either be for a study where Oxford is the lead site, or an external request for MPE (e.g. HRA approved reviewers) + +2. **Local Approval** (makred as SSI on the system), this is where the RRA has already been completed and signed off by another MPE and CRE (so the IRAS should have already been submitted) + +This could be: (National Approval Only, National and Local Approval, Local Approval Only) +smaller data set for National Approval Only + +### Study [Header] Details + +- Short study title +- Study Acronym +- OUH R&D Project ID +- IRAS Project ID +- has IRAS been submitted? (YES/NO) +- If YES - submission date +- EudraCT number (CTIMPs only) +- est. study start date (mm/yyyy) +- est. study end date (mm/yyyy) +- est. total duration of the study (in months) +- Full Title of research project +- Type of Study +- Phase/s +- Chief investigator +- Study Coordinator(s) +- +- does the study involve trialing a new medical device? (YES/NO) +- does the study involve Radiotherapies? +- does the study involve radioactive substances? + +- is multi-centre? (YES/NO) +- if YES, how many UK Centres are involved? +- Lead Site () + +### Local Site Participation Info + +- IF study is local - Main Local Site +- Local Departments where imaging or therapy procedures will take place +- Name of CRE or IRMER practitioner - business rules here: + - Professor Fergus Gleeson for Churchill + - Dr Suzie Anthony for JRH + - Wilhelm Kueker for West Wing + - Dr Bernadette Lavery for Radiotherapy + + +### Study Participants Info + +- Will any of the study participants be patients>? (YES/NO) +- Number (Whole Study) +- Number at Local Site (oxford) +- Age Range +- Sex of Participants (Male only, Female only, Male and Female) +- Clinical condition +- Will any of the study participants be healthy volunteers? (YES/NO) +- Number (whole study) +- Number of participants at Local (Oxford) site +- Age Range (range beginning, range end) +- Sex of Participants (Male only, Female only, Male and Female) +- Are participants healthy? (YES/NO) +- If NO - Provide Clinical condition + +- Will the study involve participants who are pregnant or breast feeding? (YES/NO) +- Will the study involve children? (YES/NO) + +### Study Protocol Procedures + +- Create a Study Cohort(s) + - Cohort Name + - Cohort contains Healthy volunteers? + - Comment / Description + - Which Phase of the study does this cohort belong to, if any + + +- Create Study Procedure(s) + - Imaging Procedure (NICIP Code) + - Assign procedure to one or more Study Cohorts (created earlier) + - Imaging Procedure Modifier + - Imaging Procedure Modifier Value + - Number of Routine Care examinations + - Number of Additional examinations + - Reporting Required (multi-selection) + - Data Processing Required? (multi-selection) + - Where will this procedure take place (OUH, Manor, Not Local) + +Radiotherapy procedures generally have a Treatment with a pre-treatment (planning) scan and a during treatment scan. with the treatment we would want to know the number of fraction (i.e. the number of times they will be required to come in) + +### Study Documentation + +- Upload File(s) + - Title + - Description + - Version + - Document Date + - Category/Type (IRAS Form, Protocol, Imaging Manual, Participant Information Sheet,Email Correspondents,Letter,HRA Approval, Other) + +Current documents we ask for: + +- National Approval + - Protocol + - Draft IRAS (if available) + - Draft Imaging Manual (if available) + - Draft PIS + - HRA documentation such as Research Exposure Form (REF form) (if via HRA route) + +- Local Approval + - Protocol + - Full IRAS Form + - Imaging Manual (unless explicit confirmation that there is none) + - ARSAC research approval certificate (if applicable, the sponsor should provide this to all participating sites) + - PIS + - Any Additional Information + + +A study record could be associated with other studies records - so we could provide a link with the reason for association / statement of their relationship + +Copyright © (2021) Oxford University Hospitals NHS Foundation Trust diff --git a/docs/technicaldocs/design/features/AssuranceRequest/README.md b/docs/technicaldocs/design/features/AssuranceRequest/README.md new file mode 100644 index 0000000..6b172fd --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/README.md @@ -0,0 +1,25 @@ +# Study Assurance Request + +Definition: _A study assurance request is a request for a study to undergo some local assurance or governance process, details of which depend on the type of assurance service being requested._ + +In its simplest form it is a request for work with an associated study proforma against it + +## Workflow Diagram + +![Overview Workflow](./diagrams/overview.drawio.svg) + +## General Steps + +1. Request is Created +2. Request is Submitted +3. Request is Reviewed +4. Request is Accepted + 1. A Study Record is created from the information in the Request + 2. The Study Record is placed on a workflow to manage the requested work + +OR + +5. Request is Rejected and a reason is provided to the requestor +6. The Requestor is able to edit and resubmit their request + +Copyright © (2021) Oxford University Hospitals NHS Foundation Trust diff --git a/docs/technicaldocs/design/features/AssuranceRequest/RaiseRequest.md b/docs/technicaldocs/design/features/AssuranceRequest/RaiseRequest.md new file mode 100644 index 0000000..21c4f92 --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/RaiseRequest.md @@ -0,0 +1,20 @@ + # Raise a Study Assurance Request + + ## Workflow Diagram + ![Raise a Study Assurance Request Workflow](./diagrams/raiseStudyAssuranceRequest.drawio.svg) + + ## General Steps + 1. Requestor Registers to ORRAS (if not already a user of the service) + 2. Requestor signs into ORRAS + 3. Requestor chooses to create a new Study Assurance Request + 4. Requestor fills out Request form with details of the study they want assured + 5. Requestor can either **save the request for later** or **submit the request for review** + 6. Requestor is given confirmation of their submission + +## Constraints + +## Acceptance Criteria + +## GUI Mock + +Copyright © (2021) Oxford University Hospitals NHS Foundation Trust diff --git a/docs/technicaldocs/design/features/AssuranceRequest/ResubmitRequest.md b/docs/technicaldocs/design/features/AssuranceRequest/ResubmitRequest.md new file mode 100644 index 0000000..a439eae --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/ResubmitRequest.md @@ -0,0 +1,29 @@ +# Resubmit Assurance Request +*Occurs when a submitted assurance request is rejected by the reviewer* + +### User Story +_As the study assurance requestor, I want to edit and resubmit a request that was rejected to avoid having to recreate the whole request._ + +## Workflow Diagram +![Resubmit workflow](./diagrams/resubmitrequest.drawio.svg) + +## General Steps +1. Requestor is notified of rejection of their request +2. Requestor follows link to their request +3. Requestor logs into system (if not already logged in) +4. Requestor reads reviewers' comments and reason for rejection +5. Requestor can reply back to reviewer to clarify any required information / points raised +6. Requestor can Edit the Rejected Request +7. Requestor makes changes to the information in the Request Form +8. Requestor re-submits changed request + +Requestor can opt to delete original request -> +all Form information should be deleted, but meta data and request info should remain. + +## Constraints + +## Acceptance Criteria + +## GUI Mock + +Copyright © (2021) Oxford University Hospitals NHS Foundation Trust diff --git a/docs/technicaldocs/design/features/AssuranceRequest/ReviewRequest.md b/docs/technicaldocs/design/features/AssuranceRequest/ReviewRequest.md new file mode 100644 index 0000000..db8ee44 --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/ReviewRequest.md @@ -0,0 +1,54 @@ +# Review a Study Assurance Request + +## Workflow Diagram + +![Study Assurance Request Review Workflow](./diagrams/reviewStudyAssuranceRequest.drawio.svg) + +## General Steps +1. Physics Team is notified that a new Study Assurance Request has been submitted and is awaiting review +2. A Physics team member logs in and views the Request +3. The physics team member can read and respond to any comments against the request +4. The team member starts an **review** against the request +5. they are now the **Request Reviewer** associated with the request +6. they are provided with a view of the request alongside a **review checklist** +7. they can check off each item/question on the checklist +8. they can edit the request to add more detail or make corrections if required +9. they submit there review and confirm an outcome along with a generic reason (if required) +- [Conditional] Review Outcome: Request is **Rejected** or **Accepted** + - **REJECTED**: the Reviewer will be provided with an opportunity to write a comment back to the requestor before finalizing their review. The requestor will be provided with the detail of the failing criteria and the comment written by the reviewer + - *could provide a secondary outcome (reject with no ability to resubmit - when submission is not appropriate for us)* + - **ACCEPTED**: + - the reviewer is asked to pick the most appropriate approval workflow to manage the approval said study (should default to the most appropriate - allows the ability to change approval workflow if required) + - after confirmation, the system created the corresponding study record and the requestor is notified. + +### Logical Checks/Tasks Performed by Request Reviewer +1. Has all the required documentation been uploaded? +2. Are all uploaded files valid for the associated study? +3. Are all uploaded files marked with a version number and date? +4. Are contacts assigned appropriate? +5. Are the contact details of each assigned contact up to date? +6. Does at least one procedure occur at OUH (local site)? (for local approvals) +7. Is IRAS Part B section 3 complete and valid? +8. Are all non-ionising procedures included in the study procedures list? (radiology require these) +9. Are details of any radiation exposures (both ionising and non-ionising) consistent throughout the application with no discrepancies or contradictions between documents? +10. + + +? AUTOMATED CHECK (would need the licence numbers for each procedure per site, ) + + +1. Are Nuclear Medicine (ARSAC) procedures covered by site licence? +2. Does the practitioner (or PI) have a corresponding licence for all procedures listed? + +### Notification Statements +**Rejected**: "Your request [requestid] for Research Radiation Assurance to be carried out for study [studyid] as been rejected due to [rejectionreason]. The reviewer has written the following comment '[comment here]'. You may edit your rejected request and re-submit it for review [here]" + +**Accepted**:" " your request [requestid] for Research Radiation Assurance to be carried out for study [studyid] as been accepted. A study record has been created from your request and can be viewed [here]. The study will now undergo an assurance workflow to manage the technical assurance activities and governance checks required to provide approval" + +## Constraints + +## Acceptance Criteria + +## GUI Mock + +Copyright © (2021) Oxford University Hospitals NHS Foundation Trust diff --git a/docs/technicaldocs/design/features/AssuranceRequest/_sidebar.md b/docs/technicaldocs/design/features/AssuranceRequest/_sidebar.md new file mode 100644 index 0000000..d0c04fe --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/_sidebar.md @@ -0,0 +1,10 @@ + +* [Home](/) + * [Design](/technicaldocs/design/) + * [Features](/technicaldocs/design/features/) +--- +* [Study Assurance Request](/technicaldocs/design/features/AssuranceRequest/) + * [Raise a Request](/technicaldocs/design/features/AssuranceRequest/RaiseRequest.md) + * [Review a submitted Request](/technicaldocs/design/features/AssuranceRequest/ReviewRequest.md) + * [Resumit a Request](/technicaldocs/design/features/AssuranceRequest/ResubmitRequest.md) + * [Data Required for Request](/technicaldocs/design/features/AssuranceRequest/DataRequiredForRequest.md) diff --git a/docs/technicaldocs/design/features/AssuranceRequest/diagrams/overview.drawio.svg b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/overview.drawio.svg new file mode 100644 index 0000000..36d0882 --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/overview.drawio.svg @@ -0,0 +1,318 @@ + + + + + + + + + +
+
+
+ Create +
+ Request +
+
+
+
+ + Create... + +
+
+ + + + + + +
+
+
+ Submit +
+ Request +
+
+
+
+ + Submit... + +
+
+ + + + + + + + Requestor + + + + + + User is + + + Signed in + + + + + + + + + + +
+
+
+ Read Comments +
+ & Reason +
+
+
+
+
+ + Read Comments... + +
+
+ + + + +
+
+
+ Edit +
+ Request +
+
+
+
+ + Edit... + +
+
+ + + + + + Medical Physics Staff + + + + + + + + + + +
+
+
+ Review +
+ Request +
+
+
+
+ + Review... + +
+
+ + + + + + +
+
+
+ Set Assurance +
+ Workflow +
+
+
+
+ + Set Assurance... + +
+
+ + + + + + + +
+
+
+ Confirm Review +
+ Outcome +
+
+
+
+ + Confirm Review... + +
+
+ + + + + +
+
+
+ [Rejected] +
+
+
+
+ + [Rejected] + +
+
+ + + + + +
+
+
+ [Resubmit] +
+
+
+
+ + [Resubmit] + +
+
+ + + + + + System + + + + + + +
+
+
+ Notify +
+ Physics Team +
+
+
+
+ + Notify... + +
+
+ + + + +
+
+
+ Create +
+ Study Record +
+
+
+
+ + Create... + +
+
+ + + + +
+
+
+ Notify Requestor +
+ of Outcome +
+
+
+
+ + Notify Requestor... + +
+
+ + + + + + + +
+
+
+ [Accepted] +
+
+
+
+ + [Accepted] + +
+
+ + + + + + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/design/features/AssuranceRequest/diagrams/raiseStudyAssuranceRequest.drawio.svg b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/raiseStudyAssuranceRequest.drawio.svg new file mode 100644 index 0000000..78e6df4 --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/raiseStudyAssuranceRequest.drawio.svg @@ -0,0 +1,286 @@ + + + + + + + + + User Signed + + + into ORRAS + + + + + + + + +
+
+
+ Create +
+ New Request +
+
+
+
+ + Create... + +
+
+ + + + + +
+
+
+ [Not finished] +
+
+
+
+ + [Not finished] + +
+
+ + + + + + +
+
+
+ Fill-out +
+ Form +
+
+
+
+ + Fill-out... + +
+
+ + + + + + +
+
+
+ Save Progress +
+ for Later +
+
+
+
+ + Save Progress... + +
+
+ + + + + +
+
+
+ [Finished] +
+
+
+
+ + [Finished] + +
+
+ + + + + + + +
+
+
+ Submit Request +
+ For Review +
+
+
+
+ + Submit Request... + +
+
+ + + + + +
+
+
+ [Invalid] +
+
+
+
+ + [Invalid] + +
+
+ + + + + +
+
+
+ [Valid] +
+
+
+
+ + [Valid] + +
+
+ + + + + + +
+
+
+ [Correct Errors] +
+
+
+
+ + [Correct Errors] + +
+
+ + + + +
+
+
+ View +
+ Validation Errors +
+
+
+
+ + View... + +
+
+ + + + + + +
+
+
+ Open +
+ Form +
+
+
+
+ + Open... + +
+
+ + + + + + +
+
+
+ Request Sent +
+ for Review +
+
+
+
+ + Request Sent... + +
+
+ + + + + + +
+
+
+ Recieve +
+ Confirmation of +
+ submission +
+
+
+
+ + Recieve... + +
+
+ + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/design/features/AssuranceRequest/diagrams/resubmitrequest.drawio.svg b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/resubmitrequest.drawio.svg new file mode 100644 index 0000000..aba8d6e --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/resubmitrequest.drawio.svg @@ -0,0 +1,364 @@ + + + + + + + + + +
+
+
+ open link +
+ in notification +
+
+
+
+ + open link... + +
+
+ + + + + + A Request I submitted + + + was rejected + + + + + + + + +
+
+
+ View +
+ Request +
+
+
+
+ + View... + +
+
+ + + + + +
+
+
+ [Signed In[ +
+
+
+
+ + [Signed In[ + +
+
+ + + + + + + + + +
+
+
+ Authenticate User +
+
+
+
+ + Authenticate User + +
+
+ + + +
+
+
+ [Not signed in] +
+
+
+
+ + [Not signed in] + +
+
+ + + + + + + + +
+
+
+ Read reviewer +
+ comments +
+
+
+
+ + Read reviewer... + +
+
+ + + + + +
+
+
+ Retry +
+
+
+
+ + Retry + +
+
+ + + + + +
+
+
+ Cancel +
+
+
+
+ + Cancel + +
+
+ + + + + + + +
+
+
+ View reason for +
+ rejection +
+
+
+
+ + View reason fo... + +
+
+ + + + +
+
+
+ Withdraw +
+ Request +
+
+
+
+ + Withdraw... + +
+
+ + + + + + +
+
+
+ open request +
+ form +
+
+
+
+ + open request... + +
+
+ + + + + + +
+
+
+ make edits +
+ or addtions +
+
+
+
+ + make edits... + +
+
+ + + + + + +
+
+
+ resubmit +
+ request +
+
+
+
+ + resubmit... + +
+
+ + + + + +
+
+
+ [No Clarification Needed] +
+
+
+
+ + [No Clarification Needed] + +
+
+ + + + + +
+
+
+ [Need Clarification] +
+
+
+
+ + [Need Clarification] + +
+
+ + + + + +
+
+
+ Reply to +
+ reviewer comment +
+
+
+
+ + Reply to... + +
+
+ + + + + + + + +
+
+
+ recieve confirmation +
+ of submission +
+
+
+
+ + recieve confirmati... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/design/features/AssuranceRequest/diagrams/reviewStudyAssuranceRequest.drawio.svg b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/reviewStudyAssuranceRequest.drawio.svg new file mode 100644 index 0000000..2e2d8ce --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/reviewStudyAssuranceRequest.drawio.svg @@ -0,0 +1,510 @@ + + + + + + + + + New Request + + + Submited + + + + + + + + +
+
+
+ Physics Team +
+ is Notified +
+
+
+
+ + Physics Team... + +
+
+ + + + + + +
+
+
+ Team Member +
+ opens Request +
+ via a link +
+
+
+
+ + Team Member... + +
+
+ + + + + +
+
+
+ [Not Signed in] +
+
+
+
+ + [Not Signed in] + +
+
+ + + + + +
+
+
+ [Signed in] +
+
+
+
+ + [Signed in] + +
+
+ + + + + + + +
+
+
+ Authenticate User +
+
+
+
+ + Authenticate User + +
+
+ + + + + + +
+
+
+ View Request +
+ Details +
+
+
+
+ + View Request... + +
+
+ + + + + + +
+
+
+ Start a Review +
+ of Request +
+
+
+
+ + Start a Review... + +
+
+ + + + + + + + +
+
+
+ Carry out a +
+ Review Task +
+
+
+
+ + Carry out a... + +
+
+ + + + + +
+
+
+ [All Results Entered] +
+
+
+
+ + [All Results Entered] + +
+
+ + + + + +
+
+
+ [Move to the next review task] +
+
+
+
+ + [Move to the next review task] + +
+
+ + + + + + + +
+
+
+ Confirm +
+ Outcome +
+
+
+
+ + Confirm... + +
+
+ + + + +
+
+
+ Enter Task's +
+ Result +
+
+
+
+ + Enter Task's... + +
+
+ + + + + +
+
+
+ [Rejected] +
+
+
+
+ + [Rejected] + +
+
+ + + + + +
+
+
+ [Accepted] +
+
+
+
+ + [Accepted] + +
+
+ + + + + + + +
+
+
+ <System> +
+ Creates +
+ Study Record +
+
+
+
+ + <System>... + +
+
+ + + + + + +
+
+
+ Set Rejection +
+ Reason +
+
+
+
+ + Set Rejection... + +
+
+ + + + + + +
+
+
+ Set Assurance +
+ Workflow +
+
+
+
+ + Set Assurance... + +
+
+ + + + + + + + +
+
+
+ Notify Requestor +
+ of Outcome +
+
+
+
+ + Notify Requestor... + +
+
+ + + + + + +
+
+
+ Complete +
+ Review +
+
+
+
+ + Complete... + +
+
+ + + + + + + + + + + +
+
+
+ Write comment +
+ against request +
+
+
+
+ + Write comment... + +
+
+ + + +
+
+
+ [comments needed] +
+
+
+
+ + [comments needed] + +
+
+ + + +
+
+
+ [comments not needed] +
+
+
+
+ + [comments not needed] + +
+
+ + + + + + + + +
+
+
+ [Request Accepted] +
+
+
+
+ + [Request Accepted] + +
+
+ + + + + +
+
+
+ [Request Rejected] +
+
+
+
+ + [Request Rejected] + +
+
+ +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/design/features/AssuranceRequest/diagrams/submitAssuranceRequest.drawio.svg b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/submitAssuranceRequest.drawio.svg new file mode 100644 index 0000000..4e51bf2 --- /dev/null +++ b/docs/technicaldocs/design/features/AssuranceRequest/diagrams/submitAssuranceRequest.drawio.svg @@ -0,0 +1,488 @@ + + + + + + + + + +
+
+
+ display helpful +
+ validation error +
+
+
+
+
+ + display helpful... + +
+
+ + + + + +
+
+
+ NO +
+
+
+
+ + NO + +
+
+ + + + + + +
+
+
+ Move form +
+ to next page +
+
+
+
+ + Move form... + +
+
+ + + + + + +
+
+
+ Show Summary +
+ of request +
+
+
+
+ + Show Summary... + +
+
+ + + + + + +
+
+
+ validate +
+ submission +
+
+
+
+ + validate... + +
+
+ + + + + +
+
+
+ NO +
+
+
+
+ + NO + +
+
+ + + + is submission + + + valid? + + + + + + + + + + + +
+
+
+ Start New +
+ Request +
+
+
+
+ + Start New... + +
+
+ + + + + + +
+
+
+ Enter data +
+ into form fields +
+
+
+
+ + Enter data... + +
+
+ + + + + + +
+
+
+ Continue to +
+ next page +
+
+
+
+ + Continue to... + +
+
+ + + + + +
+
+
+ YES +
+
+
+
+ + YES + +
+
+ + + + is entry + + + valid? + + + + + + + + +
+
+
+ Correct entry +
+
+
+
+ + Correct entry + +
+
+ + + + + + +
+
+
+ submit form +
+
+
+
+ + submit form + +
+
+ + + + + +
+
+
+ YES +
+
+
+
+ + YES + +
+
+ + + + + +
+
+
+ NO +
+
+
+
+ + NO + +
+
+ + + + is form + + + complete? + + + + + + + + +
+
+
+ Show Error +
+ Message +
+
+
+
+ + Show Error... + +
+
+ + + + + +
+
+
+ NO +
+
+
+
+ + NO + +
+
+ + + + + +
+
+
+ YES +
+
+
+
+ + YES + +
+
+ + + + confirm + + + submission? + + + + + + + + +
+
+
+ edit form +
+
+
+
+ + edit form + +
+
+ + + + +
+
+
+ Provide +
+ form data back +
+
+
+
+ + Provide... + +
+
+ + + + + + +
+
+
+ Save +
+ Requests +
+
+
+
+ + Save... + +
+
+ + + + + +
+
+
+ YES +
+
+
+
+ + YES + +
+
+ + + + + + + + + + +
+
+
+ Send Email +
+
+
+
+ + Send Email + +
+
+ + + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/design/features/README.md b/docs/technicaldocs/design/features/README.md new file mode 100644 index 0000000..524e8f8 --- /dev/null +++ b/docs/technicaldocs/design/features/README.md @@ -0,0 +1,8 @@ +# Features + +## Epics +* + +## Features +* [Study Assurance Requests](/technicaldocs/design/features/AssuranceRequest/) +* \ No newline at end of file diff --git a/docs/technicaldocs/design/features/StudyRecord/README.md b/docs/technicaldocs/design/features/StudyRecord/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/technicaldocs/design/features/_sidebar.md b/docs/technicaldocs/design/features/_sidebar.md new file mode 100644 index 0000000..3f4a282 --- /dev/null +++ b/docs/technicaldocs/design/features/_sidebar.md @@ -0,0 +1,6 @@ + +* [Home](/) + * [Technical Docs](/technicaldocs/) + * [Features](/technicaldocs/design/features/) + +* [Study Assurance Request](/technicaldocs/design/features/AssuranceRequest/) \ No newline at end of file diff --git a/docs/technicaldocs/design/personas/imagingmodalitylead.md b/docs/technicaldocs/design/personas/imagingmodalitylead.md new file mode 100644 index 0000000..de3f33a --- /dev/null +++ b/docs/technicaldocs/design/personas/imagingmodalitylead.md @@ -0,0 +1 @@ +# Persona: Imaging Modality Lead diff --git a/docs/technicaldocs/design/personas/medicalphysicist.md b/docs/technicaldocs/design/personas/medicalphysicist.md new file mode 100644 index 0000000..594663c --- /dev/null +++ b/docs/technicaldocs/design/personas/medicalphysicist.md @@ -0,0 +1,2 @@ +# Persona: Medical Physicist + diff --git a/docs/technicaldocs/design/personas/principalinvestigator.md b/docs/technicaldocs/design/personas/principalinvestigator.md new file mode 100644 index 0000000..1e407b0 --- /dev/null +++ b/docs/technicaldocs/design/personas/principalinvestigator.md @@ -0,0 +1 @@ +# Persona: Principal Investigator diff --git a/docs/technicaldocs/design/personas/radiologyappointmentcoordinator.md b/docs/technicaldocs/design/personas/radiologyappointmentcoordinator.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/technicaldocs/design/personas/registereduser.md b/docs/technicaldocs/design/personas/registereduser.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/technicaldocs/design/personas/researchradiographer.md b/docs/technicaldocs/design/personas/researchradiographer.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/technicaldocs/design/system/README.md b/docs/technicaldocs/design/system/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/technicaldocs/diagrams/Architecture/CQRS_simplfied.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CQRS_simplfied.drawio.svg new file mode 100644 index 0000000..366b832 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CQRS_simplfied.drawio.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + +
+
+
+ Queries +
+
+
+
+ + Quer... + +
+
+ + + + +
+
+
+ Commands +
+
+
+
+ + Comm... + +
+
+ + + + + +
+
+
+ Data Store(s) +
+
+
+
+ + Data Store(s) + +
+
+ + + + + + +
+
+
+ Read Model +
+
+
+
+ + Read M... + +
+
+ + + + + +
+
+
+ Write Model +
+
+
+
+ + Write... + +
+
+ + + + + +
+
+
+ modifies or mutates state +
+
+
+
+ + modifies or mut... + +
+
+ + + + +
+
+
+ retrieves data. +
+ does not modify state +
+
+
+
+ + retrieves data.... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CleanArchCone.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CleanArchCone.drawio.svg new file mode 100644 index 0000000..e569574 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CleanArchCone.drawio.svg @@ -0,0 +1,283 @@ + + + + + + + + + +
+
+
+ Level +
+
+
+
+ + Level + +
+
+ + + + + + + + +
+
+
+ Database / Persistance +
+
+
+
+ + Data... + +
+
+ + + + +
+
+
+ Devices +
+
+
+
+ + Devi... + +
+
+ + + + +
+
+
+ Web +
+
+
+
+ + Web + +
+
+ + + + +
+
+
+ UI +
+
+
+
+ + UI + +
+
+ + + + +
+
+
+ External Interfaces +
+
+
+
+ + Exte... + +
+
+ + + + +
+
+
+ Gateways +
+
+
+
+ + Gate... + +
+
+ + + + +
+
+
+ Presenters +
+
+
+
+ + Pres... + +
+
+ + + + +
+
+
+ Controllers +
+
+
+
+ + Cont... + +
+
+ + + + +
+
+
+ Use Cases / Interactions +
+
+
+
+ + Use Cases / Interactions + +
+
+ + + + +
+
+
+ Business Logic +
+
+
+
+ + Business Logic + +
+
+ + + + +
+
+
+ Entities +
+
+
+
+ + Entities + +
+
+ + + + + + + +
+
+
+ Abstract, General, +
+ Rarely Change +
+
+
+
+ + Abstract, General,... + +
+
+ + + + +
+
+
+ Concrete, Specific, +
+ Change Frequently +
+
+
+
+ + Concrete, Specific,... + +
+
+ + + + + + +
+
+
+ Dependencies +
+
+
+
+ + Dependencies + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CleanArchOverview.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CleanArchOverview.drawio.svg new file mode 100644 index 0000000..901eeba --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CleanArchOverview.drawio.svg @@ -0,0 +1,740 @@ + + + + + + + + +
+
+
+ Clean Architecture +
+
+
+
+ + Clean Architecture + +
+
+ + + + +
+
+
+ The Dependency Rule +
+
+
+
+ + The Dependency Rule + +
+
+ + + + +
+
+
+ + Source code dependencies can only point inward. +
+ Nothing in a inner circle can know anything about something in an outer circle. +
+
+
+
+
+
+ + Source code dependencies c... + +
+
+ + + + + +
+
+
+ Use Case +
+ Output Port +
+
+
+
+ + Use Case... + +
+
+ + + + + + + +
+
+
+

+ + Entities + +

+
+
+
+
+ + Entities + +
+
+ + + + +
+
+
+ Business Logic +
+ / Use Cases +
+
+
+
+ + Business Logic... + +
+
+ + + + +
+
+
+ Controllers +
+
+
+
+ + Controllers + +
+
+ + + + +
+
+
+ Gateways +
+
+
+
+ + Gateways + +
+
+ + + + +
+
+
+ Presenters +
+
+
+
+ + Presenters + +
+
+ + + + +
+
+
+ Web +
+
+
+
+ + Web + +
+
+ + + + +
+
+
+ Devices +
+
+
+
+ + Devices + +
+
+ + + + +
+
+
+ + External +
+ Interfaces +
+
+
+
+
+ + External... + +
+
+ + + + +
+
+
+ DB / Persistance +
+
+
+
+ + DB / Persistance + +
+
+ + + + +
+
+
+ UI +
+
+
+
+ + UI + +
+
+ + + + + + + + + + + +
+
+
+ + Core + +
+
+
+
+ + Core + +
+
+ + + + +
+
+
+ + <I> + +
+
+
+
+ + <I> + +
+
+ + + + +
+
+
+ Dependency Inversion & Flow of Control +
+
+
+
+ + Dependency Inversion & Flow of Control + +
+
+ + + + + + + + + + +
+
+
+ Use Case +
+
+
+
+ + Use Case + +
+
+ + + + + +
+
+
+ Use Case +
+ Input Port +
+
+
+
+ + Use Case... + +
+
+ + + + + + + +
+
+
+ Presenter +
+
+
+
+ + Presenter + +
+
+ + + + + +
+
+
+ Flow of Control +
+
+
+
+ + Flow of Control + +
+
+ + + + + + + +
+
+
+ Controller +
+
+
+
+ + Controller + +
+
+ + + + +
+
+
+ The centre of the design (the core) contains the fundamental business rules and logic of the application and domain objects. +
+ It defines capabilities but does not explain their implementation. +
+
+ Implementation is left to outer layers by using Interfaces and abstractions within core and delegating the responsibilities of implementation to outer layers, decoupling business logic from the frameworks and providers being used. +
+
+
+
+ + The centre of the design (the core) conta... + +
+
+ + + + +
+
+
+ + <I> + +
+
+
+
+ + <I> + +
+
+ + + + +
+
+
+ To move from the inside out, dependency inversion is used together with composistion and inheritance +
+
+
+
+ + To move from the inside out, dependency inv... + +
+
+ + + + + + + + +
+
+
+ High Level +
+
+
+
+ + High Level + +
+
+ + + + +
+
+
+ Abstractions +
+
+
+
+ + Abstractions + +
+
+ + + + +
+
+
+ Business Rules +
+
+
+
+ + Business Rules + +
+
+ + + + +
+
+
+ Rarely Change +
+
+
+
+ + Rarely Change + +
+
+ + + + +
+
+
+ As we move towards the centre the design becomes more abstract, caring less about the implementation details. +
+
+
+
+ + As we move towards the centre the design becom... + +
+
+ + + + + + + + +
+
+
+ Frameworks & Drivers +
+
+
+
+ + Frameworks & Drivers + +
+
+ + + + +
+
+
+ Interface Adapters +
+
+
+
+ + Interface Adapters + +
+
+ + + + +
+
+
+ Application Rules +
+
+
+
+ + Application Rules + +
+
+ + + + +
+
+
+ Business Rules & Business Objects +
+
+
+
+ + Business Rules &... + +
+
+ + + + +
+
+
+ Abstraction principle +
+
+
+
+ + Abstraction principle + +
+
+ + + + +
+
+
+ Low Level +
+
+
+
+ + Low Level + +
+
+ + + + +
+
+
+ Details +
+
+
+
+ + Details + +
+
+ + + + +
+
+
+ Mechanisms +
+
+
+
+ + Mechanisms + +
+
+ + + + +
+
+
+ Often Change +
+
+
+
+ + Often Change + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CleanArchSimple.png b/docs/technicaldocs/diagrams/Architecture/CleanArchSimple.png new file mode 100644 index 0000000..1d09f3c Binary files /dev/null and b/docs/technicaldocs/diagrams/Architecture/CleanArchSimple.png differ diff --git a/docs/technicaldocs/diagrams/Architecture/CleanArch_Narch_Comparision.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CleanArch_Narch_Comparision.drawio.svg new file mode 100644 index 0000000..0a368ff --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CleanArch_Narch_Comparision.drawio.svg @@ -0,0 +1,291 @@ + + + + + + + +
+
+
+ Clean Architecture +
+
+
+
+ + Clean Architecture + +
+
+ + + + +
+
+
+ Traditional +
+ Three Tiered Architecture +
+
+
+
+ + Traditional... + +
+
+ + + + + + +
+
+
+ Prensentation / UI layer +
+
+
+
+ + Prensentation / UI layer + +
+
+ + + + + + +
+
+
+ Business Logic Layer +
+
+
+
+ + Business Logic Layer + +
+
+ + + + + + + +
+
+
+ Data Access Layer +
+
+
+
+ + Data Access Layer + +
+
+ + + + + +
+
+
+ Data Source +
+
+
+
+ + Data Source + +
+
+ + + + + +
+
+
+ Direction of dependency +
+
+
+
+ + Direction of dependency + +
+
+ + + + +
+
+
+ Every Layer is dependent on the Data Source / Database +
+
+
+
+ + Every Layer is dep... + +
+
+ + + + + + +
+
+
+ Centre of the App +
+
+
+
+ + Centre of the App + +
+
+ + + + + + +
+
+
+ Prensentation / UI layer +
+
+
+
+ + Prensentation / UI layer + +
+
+ + + + +
+
+
+ Business Logic Layer +
+
+
+
+ + Business Logic Layer + +
+
+ + + + + + + + + +
+
+
+ Data Access Layer +
+
+
+
+ + Data Access Layer + +
+
+ + + + + +
+
+
+ Data Source +
+
+
+
+ + Data Source + +
+
+ + + + + + +
+
+
+ Business is the core of the App +
+
+
+
+ + Business is... + +
+
+ + + + +
+
+
+ Dependencies face inward toward the business logic +
+
+
+
+ + Dependencies face inward toward the business logic + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CurrentORRAProcessOverview.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CurrentORRAProcessOverview.drawio.svg new file mode 100644 index 0000000..59b60b0 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CurrentORRAProcessOverview.drawio.svg @@ -0,0 +1,3 @@ + + +
Study Record
created
Study Record...
Form Validated & Imported
Form Validate...
Send Blank Form
Request
Assurance
Reques...
Medical Physics
Medica...
Study
Coordinator
Stud...
Send back
completed form
Send back...
Documents Uploaded to Record
Documents Upl...
Medical Physics Validation
Medical Physi...
Radiology Validation
Radiology Val...
MPE Check
MPE Check
Radiology
CRE
Radiology...
Study can
 commence
Study can...
TMA
TMA
Monitoring
of Exposures
Monitoring...
Emails
Emails
Emails
Emails
Emails
Emails
Emails
Emails
Emails
Emails
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.drawio.svg b/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.drawio.svg new file mode 100644 index 0000000..3a873a0 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.drawio.svg @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg b/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg new file mode 100644 index 0000000..8423083 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg @@ -0,0 +1 @@ +
Windows PC
Windows PC
OXNET User
OXNET...
      Application DLLs
Appli...
Visual Basic 6 Application Executable
ODBC
Connection
ODBC...
NTFS File Share
NTFS...
AccessDatabase(.mdb)
SMB Protocol
SMB Protocol
OXNET
File Server
OXNET...
OXNET
 (Hospital Network)
OXNET...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/MediatorAnalogy.drawio.svg b/docs/technicaldocs/diagrams/Architecture/MediatorAnalogy.drawio.svg new file mode 100644 index 0000000..1da0ad7 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/MediatorAnalogy.drawio.svg @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/ProjectLevelOverview.drawio.svg b/docs/technicaldocs/diagrams/Architecture/ProjectLevelOverview.drawio.svg new file mode 100644 index 0000000..571318d --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/ProjectLevelOverview.drawio.svg @@ -0,0 +1,681 @@ + + + + + + + +
+
+
+ + Domain Project + +
+
+
+
+ + Domain Project + +
+
+ + + + +
+
+
+ + Application Project + +
+
+
+
+ + Application Project + +
+
+ + + + +
+
+
+ + WebUI Project + +
+
+
+
+ + WebUI Project + +
+
+ + + + + + +
+
+
+ + Infrastructure Project + +
+
+
+
+ + Infrastructure Project + +
+
+ + + + +
+
+
+ + Data / Persistance Providers + +
+
+
+
+ + Data / Persistance Prov... + +
+
+ + + + + + + + + + +
+
+
+ ORRA +
+ Project Level +
+ Solution Architecture +
+
+
+
+ + ORRA... + +
+
+ + + + +
+
+
+ + React Client App + +
+
+
+
+ + React Client App + +
+
+ + + + +
+
+
+ Interfaces +
+
+
+
+ + Interfaces + +
+
+ + + + +
+
+
+ POCO +
+ Entities +
+
+
+
+ + POCO... + +
+
+ + + + + + + +
+
+
+ Value +
+ Objects +
+
+
+
+ + Value... + +
+
+ + + + +
+
+
+ Enums +
+
+
+
+ + Enums + +
+
+ + + + +
+
+
+ Entities +
+
+
+
+ + Entities + +
+
+ + + + +
+
+
+ Mediator +
+
+
+
+ + Mediator + +
+
+ + + + +
+
+
+ Business +
+ Services +
+
+
+
+ + Business... + +
+
+ + + + +
+
+
+ Controllers +
+
+
+
+ + Controllers + +
+
+ + + + +
+
+
+ Entity Framework Core +
+
+
+
+ + Entity Framework Core + +
+
+ + + + +
+
+
+ HTTP Context +
+
+
+
+ + HTTP Context + +
+
+ + + + + + +
+
+
+ Commands & Queries (CQRS) +
+
+
+
+ + Commands & Queries (... + +
+
+ + + + +
+
+
+ Application Exceptions +
+
+
+
+ + Application Exceptio... + +
+
+ + + + +
+
+
+ API +
+ Exception Filters +
+
+
+
+ + API... + +
+
+ + + + +
+
+
+ FluentValidation +
+ Validators +
+
+
+
+ + FluentValidation... + +
+
+ + + + +
+
+
+ Cross-cutting Behaviours +
+
+
+
+ + Cross-cutting Behavi... + +
+
+ + + + +
+
+
+ Object +
+ Mappings +
+
+
+
+ + Object... + +
+
+ + + + +
+
+
+ Logging +
+
+
+
+ + Logging + +
+
+ + + + +
+
+
+ Identity +
+ services +
+
+
+
+ + Identity... + +
+
+ + + + +
+
+
+ File +
+ Services +
+
+
+
+ + File... + +
+
+ + + + +
+
+
+ Email Service +
+
+
+
+ + Email Service + +
+
+ + + + +
+
+
+ Notification Service +
+
+
+
+ + Notification Service + +
+
+ + + + +
+
+
+ Database Context +
+
+
+
+ + Database Context + +
+
+ + + + +
+
+
+ + Identity Providers + +
+
+
+
+ + Identity Providers + +
+
+ + + + +
+
+
+ + Third Party Services + +
+
+
+
+ + Third Party Services + +
+
+ + + + +
+
+
+ HTTP Response Pipeline +
+
+
+
+ + HTTP Response Pipeli... + +
+
+ + + + + + + + +
+
+
+ WebUI +
+
+
+
+ + WebUI + +
+
+ + + + +
+
+
+ Infrastructure +
+
+
+
+ + Infras... + +
+
+ + + + +
+
+
+ Application +
+
+
+
+ + Applic... + +
+
+ + + + +
+
+
+ Domain +
+
+
+
+ + Domain + +
+
+ + + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/ProposedORRAProcessOverview.drawio.svg b/docs/technicaldocs/diagrams/Architecture/ProposedORRAProcessOverview.drawio.svg new file mode 100644 index 0000000..b3e4ef5 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/ProposedORRAProcessOverview.drawio.svg @@ -0,0 +1,3 @@ + + +
Submit Request
Submit R...
Study
Coordinator
Study...
Assigned
To a Workflow
Assigned...
Request Reviewed
Request Re...
Study Record
Study...
comments
commen...
Assurance
Workflow(s)
Assurance...
Assurance
Stage
Assurance...
could
modify record
could...
Stage Tasks
Stage Ta...
Next Stage
Next Stage
Complete Stage
Complete...
Cycle Finished
Cycle Fi...
Assurance Result
Assurance...
comments & conversations 
comme...
TMA
TMA
Monitoring
Exposures
Monitoring...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/ProposedSystemPhysicalArch.drawio.svg b/docs/technicaldocs/diagrams/Architecture/ProposedSystemPhysicalArch.drawio.svg new file mode 100644 index 0000000..06305d2 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/ProposedSystemPhysicalArch.drawio.svg @@ -0,0 +1,440 @@ + + + + + + + +
+
+
+ Database Server/s +
+
+
+
+ + Database Se... + +
+
+ + + + + + + +
+
+
+ Backend +
+ + ASP.NET Web API + +
+
+
+
+ + Backend... + +
+
+ + + + + + + + + + + + + + +
+
+
+ Frontend +
+ + Client-side single page application (SPA) + +
+
+
+
+ + Frontend... + +
+
+ + + + +
+
+
+ HTML / JS / CSS +
+ files +
+
+
+
+ + HTML / JS... + +
+
+ + + + + React JS + + + + + + + + +
+
+
+ HTTP +
+ Requests & Responses +
+
+
+
+ + HTTP... + +
+
+ + + + + + + + +
+
+
+ Web Server +
+
+
+
+ + Web Server + +
+
+ + + + + +
+
+
+ JSON Web Tokens +
+
+
+
+ + JSO... + +
+
+ + + + +
+
+
+ HTTPS (SSL/TLS) +
+
+
+
+ + HTTP... + +
+
+ + + + + + + +
+
+
+ API Endpoints +
+
+
+
+ + API Endp... + +
+
+ + + + + +
+
+
+ Web Browser +
+
+
+
+ + Web Browser + +
+
+ + + + + + + + +
+
+
+ Database Server/s +
+
+
+
+ + Database... + +
+
+ + + + + + + + +
+
+
+ Web Layer +
+
+
+
+ + Web Layer + +
+
+ + + + + + +
+
+
+ Data Access Layer +
+
+
+
+ + Data Access La... + +
+
+ + + + +
+
+
+ Business Logic Layer +
+
+
+
+ + Business Logic... + +
+
+ + + + + +
+
+
+ GET +
+
+
+
+ + GET + +
+
+ + + + +
+
+
+ POST +
+
+
+
+ + POST + +
+
+ + + + +
+
+
+ PUT +
+
+
+
+ + PUT + +
+
+ + + + +
+
+
+ DELETE +
+
+
+
+ + DELETE + +
+
+ + + + +
+
+
+ PATCH +
+
+
+
+ + PATCH + +
+
+ + + + + + + + + + + + +
+
+
+ read +
+ optimised +
+
+
+
+ + read... + +
+
+ + + + + + +
+
+
+ + AzureSql +
+ database +
+
+
+
+
+ + AzureS... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/RESTAPI.drawio.svg b/docs/technicaldocs/diagrams/Architecture/RESTAPI.drawio.svg new file mode 100644 index 0000000..e5c9502 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/RESTAPI.drawio.svg @@ -0,0 +1 @@ +7Zpbc+MmFMc/jWfah2hAN0uPceJs28l203U6Tfqygy1s05WEinBi76dfkNANnMT3ZGfjzMTmCIHg/PhzAPWci2T5gaFs/pFGOO7ZIFr2nMuebYeuL/5Lw6o0+LZTGmaMRKUJNoYR+YaVESjrgkQ472TklMacZF3jhKYpnvCODTFGH7vZpjTu1pqhGTYMowmKTes/JOLz0hrY/cb+GyazuarZC1TzElTlVQ3J5yiijy2TM+w5F4xSXv5Klhc4ll1XdUt539UTV+vnYjjlm9zw5a+7we0yicNh/qnvs3vqnv17pkp5QPFCtfciJrLA8pH5quoGlGdl707JEosSBxklKcds+CByyy6GwlY3EYhEhPK5zFkk5jyJq0yc0a/4gsaUCUtKU1HDIEZjHN/QnHBCU2GeYFm4uPCAGSfCG9dahjHlnCatDOcxmckLnGbCilSqLmdK4riqs2c7AMAguCwfOZNNTJYzia+Fvi0YtiY0yRbqRppyRSX0RFp1mKgVL5/0BKz9K4YFpgnmbCWyqBsqItSIsF27TD82fEEILagKnrfwgkDdixTWs7r0xvXih/L+FiTYBgkGAziNzuWIkv0aozwnk65n8ZLwO+lwK4ChSt+L9BmwgKvSl0tFRJFYtRI3mBHRFNnpha3kpBpzjsyViobeqQJBUFnuiyp926sMTR1FatVO6bWUjcSRIQKaM0VH0AWb4JfHEkdshvkz+frr4Wh53wOm5ysbwzHi5KH7uOtoUDXcyHHasOeEXfgcWwOqbKa6qy0nWkH1A1UUO1pBZT8YBRVw1s3enVfH4PWP0ac/e7I5V+L/3cdrg18xYvkGWtSWCmUy5ERXnYREkaxm8DgnHI8yVJDyKCRF2BhdpFEthUcQFBgAK+x33WGbouKuwUp3/8H0JDS6v9sNlPE5ndFUSDuVkl344z/M+Up1DlpwqulLNf6B1Xf89vCHFtht+K8RmVrEHOC0RAxsLWAHlBZ3P2nZWDP28rhrjMhLxNEY5bhn+7EceWPWIcL/fyGDn2JEnOWF189FBuhly+ai+DWT3798xqqbbDDilOFfDcBaqLwYNhgjuohABmjydVZw2ooVpsXnyVCji5D9bBikRxuE5n2LiNA1tyLRV2vUoatQ7cjlALrhgJcjEd+zwsDUjeBYuhEcQTfqIR22RzTcekS3BMh3+t34A8A6RNlTgNZFWcJ4ReKqQQdUlv6GyuK+prLANbGoaPxIJdUkfUBOoHsYTsS8BDVO4E7z1AZQmCRJLWkpx1XxeR18ntChE+HjP4tPQ8qwsR6SJq8dRlh1VLENT7X3qZheX3A91KYR10QBFJ8joLCHi59YZvS7U1R/s1WG6C60amUrdivyZ6oJ/HXVNNSVBR50BQP7r4tlYHe4tN+x3GIZre3h6OHQkRe/0IySToqOY3c1zfHe4dkCHk3TYOXOU9Fjrs1PSk8IO/C8s7MNO4HGjnda5amb/wZiqV0C858WHDvwuuCEJwbn+TXc0cHZe0n385Ljg9clx3ldcsqTpvfpaid2oB7qnJYdtcRq7Ul/Ho5up4t4yy1pN1sW3a3vSp/f/H6gkkaYPRC5u62h/tYO3uuTLn03/Omt9U3P3pN8grBV3JUxkmOraGiKuTkC6r0sfaT09t8Vt23jNK1SvPYJvR3KrZzTbYxDz2D5w/C2Vx143nwatRJ/37axLAkT3yiRJxbpOM+KtMx6Obwe3g4N7Myz0s3PQBkWvKNxURSoiC26wxv0POl5Kbe58tpxnKjPWd4aDzprzkPdo71fAYw+/vGW7PXxB3S1be3djl9/nJnxrR++2ubpq8HbYWcOTdU9IP92mVFeeJWLLnhMUlF79X4fWCdG+lxCp1Mxm1oTmk5wxnNrFtMx/qJNKJuDtJcWedAC3e3lWp7ab2eEa9Qo3BoXkWzeKSzDqOa9TGf4HQ== \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/SinglePageApplication.drawio.svg b/docs/technicaldocs/diagrams/Architecture/SinglePageApplication.drawio.svg new file mode 100644 index 0000000..9efed33 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/SinglePageApplication.drawio.svg @@ -0,0 +1,786 @@ + + + + + + + +
+
+
+ Development Environment +
+
+
+
+ + Development Environment + +
+
+ + + + +
+
+
+ Production Scenario 2 (Seperate Hosts) +
+
+
+
+ + Production Scenario 2 (Seperate Hosts) + +
+
+ + + + + + + +
+
+
+ Production Scenario 1 (Single Host) +
+
+
+
+ + Production Scenario 1 (Single Host) + +
+
+ + + + +
+
+
+ REST API +
+
+
+
+ + REST API + +
+
+ + + + + +
+
+
+ https://orra.com +
+
+
+
+ + https://orr... + +
+
+ + + + + +
+
+
+ /api/SampleData +
+
+
+
+ + /api/SampleData + +
+
+ + + + + +
+
+
+ index.html +
+
+
+
+ + index.html + +
+
+ + + + + + + + + + +
+
+
+ ASP.NET Core +
+ Web Server +
+
+
+
+ + ASP.NET Core... + +
+
+ + + + +
+
+
+ HTML/JS/CSS +
+ bundled files +
+
+
+
+ + HTML/JS/CS... + +
+
+ + + + +
+
+
+ REST API +
+
+
+
+ + REST API + +
+
+ + + + + +
+
+
+ https://orra.com +
+
+
+
+ + https://orr... + +
+
+ + + + + +
+
+
+ /api/SampleData +
+
+
+
+ + /api/SampleData + +
+
+ + + + + + + +
+
+
+ ASP.NET Core +
+ Web Server +
+
+
+
+ + ASP.NET Core... + +
+
+ + + + +
+
+
+ HTML/JS/CSS +
+ bundled files +
+
+
+
+ + HTML/JS/CS... + +
+
+ + + + +
+
+
+ Browser +
+
+
+
+ + Browser + +
+
+ + + + +
+
+
+ Browser +
+
+
+
+ + Browser + +
+
+ + + + + + + +
+
+
+ web server +
+
+
+
+ + web server + +
+
+ + + + + +
+
+
+ index.html +
+
+
+
+ + index.html + +
+
+ + + + + + + +
+
+
+ Reverse Proxy +
+
+
+
+ + Reverse Proxy + +
+
+ + + + + + +
+
+
+ + Proxy + +
+
+
+
+ + Proxy + +
+
+ + + + + + + +
+
+
+ ASP.NET Core +
+ Web Server +
+ <Kestral> port 5000 +
+
+
+
+ + ASP.NET Cor... + +
+
+ + + + + +
+
+
+ bundles +
+ are served +
+
+
+
+ + bundles... + +
+
+ + + + +
+
+
+ HTML/JS/CSS +
+ bundled files +
+
+
+
+ + HTML/JS/CS... + +
+
+ + + + + +
+
+
+ /index.html +
+ response +
+
+
+
+ + /index.html... + +
+
+ + + + + +
+
+
+ + Instructs Webpack to +
+ rebuild and rebundle +
+
+
+
+
+ + Instructs Webpack to... + +
+
+ + + + +
+
+
+ SPA development server +
+ port 3000 +
+
+
+
+ + SPA develop... + +
+
+ + + + + + +
+
+
+ GET /index.html +
+
+
+
+ + GET /index.html + +
+
+ + + + +
+
+
+ https://localhost:5000 +
+
+
+
+ + https://loc... + +
+
+ + + +
+
+
+ Browser +
+
+
+
+ + Browser + +
+
+ + + + + +
+
+
+ modifies +
+
+
+
+ + modifies + +
+
+ + + + + +
+
+
+ modifies +
+
+
+
+ + modifies + +
+
+ + + + + + + + + + +
+
+
+ Developer +
+
+
+
+ + Developer + +
+
+ + + + + +
+
+
+ Reload on code change +
+
+
+
+ + Reload on code change + +
+
+ + + + + + + +
+
+
+ Server-Side Code +
+
+
+
+ + Server-Sid... + +
+
+ + + + + +
+
+
+ Notifies changes +
+
+
+
+ + Notifies changes + +
+
+ + + + + + + + + +
+
+
+ SPA source code +
+
+
+
+ + SPA source... + +
+
+ + + + + +
+
+
+ Bundles +
+ updated +
+
+
+
+ + Bundles... + +
+
+ + + + + Webpack + + + + + + +
+
+
+ Local PostgreSQL server and db +
+
+
+
+ + Local Po... + +
+
+ + + + + + + +
+
+
+ Git Repo +
+
+
+
+ + Git Repo + +
+
+ + + + + +
+
+
+ GitHub +
+ Remote Repo +
+
+
+
+ + GitHub... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Architecture/WebAPI.drawio.svg b/docs/technicaldocs/diagrams/Architecture/WebAPI.drawio.svg new file mode 100644 index 0000000..c388549 --- /dev/null +++ b/docs/technicaldocs/diagrams/Architecture/WebAPI.drawio.svg @@ -0,0 +1,189 @@ + + + + + + + + +
+
+
+ HTTP Request +
+
+
+
+ + HTTP Request + +
+
+ + + + +
+
+
+ Clients (API Consumers) +
+
+
+
+ + Clients (API Consumers) + +
+
+ + + + + +
+
+
+ + HTTP Response + +
+
+
+
+ + HTTP Response + +
+
+ + + + +
+
+
+ RESTful +
+ Web Service / Server +
+
+
+
+ + RESTful... + +
+
+ + + + + + + + + +
+
+
+ API EndPoints +
+
+
+
+ + API EndP... + +
+
+ + + + + + + + + + + +
+
+
+ User +
+
+
+
+ + User + +
+
+ + + + + +
+
+
+ Mobile App +
+
+
+
+ + Mobil... + +
+
+ + + + + +
+
+
+ Desktop App +
+
+
+
+ + Desktop... + +
+
+ + + + + + +
+
+
+ Web Broswer +
+
+
+
+ + Web Broswer + +
+
+ +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Data/domainEntitiesConceptERD.drawio.svg b/docs/technicaldocs/diagrams/Data/domainEntitiesConceptERD.drawio.svg new file mode 100644 index 0000000..a24d6fa --- /dev/null +++ b/docs/technicaldocs/diagrams/Data/domainEntitiesConceptERD.drawio.svg @@ -0,0 +1,971 @@ + + + + + + + +
+
+
+ Assurance Requesting +
+
+
+
+ + Assurance Requesting + +
+
+ + + + +
+
+
+ Organisations and Contacts +
+
+
+
+ + Organisations and Contacts + +
+
+ + + + + + + + + Organisation + + + + + + + + + + + + Contact + + + + + + + + + + + Department + + + + + + + + + ImagingModality + + + + + + + + + ImagingProcedureModifer + + + + + + + + + + + +
+
+
+ can have +
+
+
+
+ + can have + +
+
+ + + + + + + + + + + ImagingProcedure + + + + + + + + +
+
+
+ performs +
+
+
+
+ + performs + +
+
+ + + + + + +
+
+
+ is a +
+
+
+
+ + is a + +
+
+ + + + + + + ProcedureModType + + + + + + +
+
+
+ Works in +
+
+
+
+ + Works in + +
+
+ + + + + ImagingProcedureCost + + + + + + + + +
+
+
+ costs +
+
+
+
+ + costs + +
+
+ + + + + + + +
+
+
+ contains +
+
+
+
+ + contains + +
+
+ + + + + OrgType + + + + + + + + +
+
+
+ is a +
+
+
+
+ + is a + +
+
+ + + + + Site + + + + + + + + +
+
+
+ operates +
+ on +
+
+
+
+ + operates... + +
+
+ + + + + + +
+
+
+ member of +
+
+
+
+ + member of + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + ResearchStudy + + + + + + + + + Document + + + + + + + + + File + + + + + + + + + + + + + StudyProtocol + + + + + + + + + +
+
+
+ contains +
+
+
+
+ + contains + +
+
+ + + + + + + Coordinator + + + + + + + + + + + + + + + ResearchProcedure + + + + + + + + + Cohort + + + + + + +
+
+
+ subjected to +
+
+
+
+ + subjected to + +
+
+ + + + + + + + + +
+
+
+ modifes +
+
+
+
+ + modifes + +
+
+ + + + + + + + + + Principal Investigator + + + + + + +
+
+
+ coordinates +
+
+
+
+ + coordinates + +
+
+ + + + +
+
+
+ carries out +
+
+
+
+ + carries out + +
+
+ + + + + + + Chief Investigator + + + + + + +
+
+
+ leads +
+
+
+
+ + leads + +
+
+ + + + +
+
+
+ has +
+
+
+
+ + has + +
+
+ + + + +
+
+
+ uses +
+
+
+
+ + uses + +
+
+ + + + + + + Comment + + + + + + + + + +
+
+
+ replies to +
+
+
+
+ + replies to + +
+
+ + + + +
+
+
+ undertakes +
+
+
+
+ + undertakes + +
+
+ + + + + + + + + + + + + StudyParticipant + + + + + + + + +
+
+
+ recruites +
+
+
+
+ + recruites + +
+
+ + + + +
+
+
+ recruites +
+
+
+
+ + recruites + +
+
+ + + + + ParticipantScan + + + + + + + + + +
+
+
+ has +
+
+
+
+ + has + +
+
+ + + + + + + +
+
+
+ involved with +
+
+
+
+ + involved with + +
+
+ + + + + + +
+
+
+ Main +
+ Site of +
+
+
+
+ + Main... + +
+
+ + + + + + +
+
+
+ is a +
+
+
+
+ + is a + +
+
+ + + + + + + ResearchType + + + + + + + + + + + + + ResearchAssuranceRequest + + + + + + + + + + + InitialResearchStudy + + + + + + +
+
+
+ contains +
+
+
+
+ + contains + +
+
+ + + + + + +
+
+
+ contains +
+
+
+
+ + contains + +
+
+ + + + + + + + + Comment + + + + + + + + + +
+
+
+ replies to +
+
+
+
+ + replies to + +
+
+ + + + + + + User + + + + + + +
+
+
+ written by +
+
+
+
+ + written by + +
+
+ + + + + + + + + User + + + + + + +
+
+
+ written by +
+
+
+
+ + written by + +
+
+ + + + + + + + AssuranceRequestStatus + + + + + + +
+
+
+ Study Main detail +
+
+
+
+ + Study Main detail + +
+
+ + + + +
+
+
+ Reference Data +
+
+
+
+ + Reference Data + +
+
+ + + + +
+
+
+ Clinical Data +
+
+
+
+ + Clinical Data + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Data/domainEntitiesERD.drawio.svg b/docs/technicaldocs/diagrams/Data/domainEntitiesERD.drawio.svg new file mode 100644 index 0000000..b2f5117 --- /dev/null +++ b/docs/technicaldocs/diagrams/Data/domainEntitiesERD.drawio.svg @@ -0,0 +1,666 @@ + + + + + + + +
+
+
+ Principal Investigator +
+
+
+
+ + Principal Invest... + +
+
+ + + + + + Person + + + + + +Id + + + +Title + + + +Firstname + + + +Middlename + + + +Lastname + + + +ReportsTo + + + +isArchived + + + + + + +
+
+
+ Study +
+ Coordinator +
+
+
+
+ + Study... + +
+
+ + + + +
+
+
+ Study +
+ Coordinator +
+
+
+
+ + Study... + +
+
+ + + + +
+
+
+ Clinical Radiation Expert +
+
+
+
+ + Clinical Radiati... + +
+
+ + + + + + +
+
+
+ Medical Physics Expert +
+
+
+
+ + Medical Physics... + +
+
+ + + + + + + Organisation + + + + + + + + + Employee + + + + + + + + PostalAddress + + + + + +Line1 + + + +Line2 + + + +Line3 + + + +Town + + + +County + + + +PostalCode + + + +Country + + + + + + + + Sponsor + + + + + +CompanyId + + + +SponsorType + + + + + + + + HospitalSite + + + + + +Id + + + +SiteName + + + +SiteCode + + + + + + + + HospitalDepartment + + + + + +Id + + + +SiteId + + + +DepartmentName + + + +DepartmentManager + + + +isArchived + + + + + + + + ImagingModality + + + + + +Id + + + +ModalityName + + + +ModalityCode + + + +IsArchived + + + + + + + + ImagingProcedures + + + + + +Id + + + +ModalityId + + + +DisplayTerm + + + +ShortCode + + + +LocalCRISCode + + + +IsInterventional + + + +IsDiagnostic + + + +BodyPartMFactor + + + +SCTConceptID + + + +SCTFSName + + + +SCTLateralityID + + + +IsArchived + + + + + + + + ImagingProcedureCost + + + + + +Id + + + +FinacialYear + + + +ImagingProcedureId + + + +UnitPriceGBP + + + +IsArchived + + + + + + + + DRLs + + + + + +Id + + + +ImagingProcedureId + + + +DateofCalculation + + + +NationalLevel + + + +LocalLevel + + + +isArchived + + + + + + + + ImagingProcedureModifier + + + + + +Id + + + +DisplayTerm + + + +Code + + + +ModiferType + + + +ModalityId + + + +isArchived + + + + + + + + + + ResearchStudy + + + + + +Id + + + +Pid + + + +IrasProjectId + + + +ShortTitle + + + +Acronym + + + +LongTitle + + + +ResearchType + + + +StudyManager + + + + + + + + + + + ResearchStudyProtocol + + + + + + + + ResearchType + + + + + +Id + + + +TypeName + + + +isArchived + + + + + + + + StudyProtocolProcedures + + + + + +ResearchStudyId + + + +ProtocolStudyid + + + +ImagingProcedure + + + +ImagingProcedureModifier + + + + + + + +AdditionalScans + + + + + + + + + + + + StudyDocuments + + + + + + + StudyDocumentType + + + + + + + + OrganisationType + + + + + + + Department + + + + + + + + AssuranceRequest + + + + + +Id + + + +CreatorId + + + +IrasProjectId + + + +ShortTitle + + + +Acronym + + + +LongTitle + + + +ResearchType + + + +StudyManager + + + + + + + + + + + + Procedures + + + + + +Id + + + +CreatorId + + + +IrasProjectId + + + +ShortTitle + + + +Acronym + + + +LongTitle + + + +ResearchType + + + +StudyManager + + + + + + + + + + + + ResearchStudyComment + + + + + +Id + + + +ResearchStudy + + + +CommentParentId + + + +CreatedBy + + + +CreatedOn + + + +Comment + + + + + + + O + + + + + + + + +
+
+
+ Contains +
+
+
+
+ + Contains + +
+
+ + + + +
+
+
+ Works for +
+
+
+
+ + Works for + +
+
+ + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Development Process/AV-Model.drawio.svg b/docs/technicaldocs/diagrams/Development Process/AV-Model.drawio.svg new file mode 100644 index 0000000..7fcde9f --- /dev/null +++ b/docs/technicaldocs/diagrams/Development Process/AV-Model.drawio.svg @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Development Process/AVModelSimplfied.drawio.svg b/docs/technicaldocs/diagrams/Development Process/AVModelSimplfied.drawio.svg new file mode 100644 index 0000000..c00976e --- /dev/null +++ b/docs/technicaldocs/diagrams/Development Process/AVModelSimplfied.drawio.svg @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Metrics/UMUX.drawio.svg b/docs/technicaldocs/diagrams/Metrics/UMUX.drawio.svg new file mode 100644 index 0000000..c8bee49 --- /dev/null +++ b/docs/technicaldocs/diagrams/Metrics/UMUX.drawio.svg @@ -0,0 +1 @@ +tVXbjpswEP0apPYhERhCkseETbuVepNW2tU+GvCCt8ZDjbMh/fqOwdxKoqYPlaLIc+bmmTljHD8q6o+KlvkXSJlwiJvWjn/nELINQvw3wLkFQuK3QKZ42kLeADzwX8yCrkWPPGXVxFADCM3LKZiAlCzRE4wqBaep2QuIadaSZmwGPCRUzNEnnuq8RTdkPeD3jGe5zbza2PIK2tnaQqqcpnAaQf7B8SMFoNtTUUdMmNZ1bWn9PlzR9vdSTOpbHNavT5+Cxd0zOd0Hj4tXvnrkXxc2yhsVR1uvvaw+dw14Y0pz7MdnGjPxHSquOUhUxaA1FI6/7wx2gmdGoaFENNeFQMHDI1ZemmBFnRmKLGNa8WSZgjzixfcNU3DaaKcV/GARCFAISZDotH8BqS0rGiNqsyRYNlPGgAvxraQJ14ZhxLVQF8YhPnHXZL9B3BaL92X11S56/WyQ0gwKptUZTaxDaKdp2RxY8TRQw3Mtlo9o0YPU0jHrIw8jw4Od2j9MkMwmGKAc0sIMQcZV2dQdCtPqWOEp0yPEdHcy7vDnETrFomr6vkMDj5T1oPwzSlVSeTFK0g7BRFBZ/A57gD+s0x2d3l+IGxFn762WIekyYGvaJJcS99jFoq+4ItwW38E30r7gaWpsZrTvFX9lPrJNRyCTgxD4irGG+QjtZNYkNwxmMu3FZeBtPHxZfHcVhCt/G5otUEn3GrlLcsPuGE438mgvPHftbw8Xd8o42l5484UKdlv3QG5dqOsPz3zL/sceoTi8so1u9KXyD78B \ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Metrics/currentsys_sus_graphic.drawio.svg b/docs/technicaldocs/diagrams/Metrics/currentsys_sus_graphic.drawio.svg new file mode 100644 index 0000000..9b89600 --- /dev/null +++ b/docs/technicaldocs/diagrams/Metrics/currentsys_sus_graphic.drawio.svg @@ -0,0 +1,3 @@ + + +
Awful
Awful
Excellent
Excellent
45.0
45.0
System Usability Scale (SUS)
System Usability Scale (SUS)
D
D
C
C
B
B
A
A
F
F
±5.73
±5.7...
Score
Score
Poor
Poor
OK
OK
Good
Good
> 68
> 68
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Usecases/UseCase_MedPhys.drawio.svg b/docs/technicaldocs/diagrams/Usecases/UseCase_MedPhys.drawio.svg new file mode 100644 index 0000000..21ebc8c --- /dev/null +++ b/docs/technicaldocs/diagrams/Usecases/UseCase_MedPhys.drawio.svg @@ -0,0 +1,846 @@ + + + + + + + + +
+
+
+ ORRA 3.0 System +
+
+
+
+ + ORRA 3.0 System + +
+
+ + + + + + + + + + + + +
+
+
+ Medical Physicist +
+
+
+
+ + Medic... + +
+
+ + + + + + + + + + + + + +
+
+
+ MPE +
+
+
+
+ + MPE + +
+
+ + + + + + +
+
+
+ Actor +
+ generalisation +
+
+
+
+ + Actor... + +
+
+ + + + +
+
+
+ View a +
+ Study Record +
+
+
+
+ + View a... + +
+
+ + + + +
+
+
+ Authorise +
+ Radiation Risk Assessment +
+
+
+
+ + Authorise... + +
+
+ + + + + + + + +
+
+
+ System Admin +
+
+
+
+ + Syste... + +
+
+ + + + +
+
+
+ Manage users +
+
+
+
+ + Manage users + +
+
+ + + + +
+
+
+ Manage +
+ Reference Data +
+
+
+
+ + Manage... + +
+
+ + + + +
+
+
+ Generate Radaition +
+ Risk Assessment +
+
+
+
+ + Generate Radaition... + +
+
+ + + + +
+
+
+ Appriase a +
+ Assurance Request +
+
+
+
+ + Appriase a... + +
+
+ + + + +
+
+
+ Comment against +
+ study record +
+
+
+
+ + Comment against... + +
+
+ + + + +
+
+
+ Reject a +
+ Request +
+
+
+
+ + Reject a... + +
+
+ + + + +
+
+
+ Accept a Request +
+
+
+
+ + Accept a Request + +
+
+ + + + +
+
+
+ Manage user roles +
+
+
+
+ + Manage user ro... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Edit a Study Record +
+
+
+
+ + Edit a Study Rec... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ reply to an existing comment +
+
+
+
+ + reply to an exist... + +
+
+ + + + +
+
+
+ View a +
+ Study's Documents +
+
+
+
+ + View a... + +
+
+ + + + +
+
+
+ Download a document +
+
+
+
+ + Download a docum... + +
+
+ + + + +
+
+
+ Superseed a document with another +
+
+
+
+ + Superseed a docume... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Search for +
+ a Study Record +
+
+
+
+ + Search for... + +
+
+ + + + + + + + +
+
+
+ <<email system>> +
+
+
+
+ + <<ema... + +
+
+ + + + +
+
+
+ send email +
+
+
+
+ + send email + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + + + +
+
+
+ Complete a +
+ MPE Review +
+
+
+
+ + Complete a... + +
+
+ + + + +
+
+
+ Validate +
+ a Study +
+
+
+
+ + Validate... + +
+
+ + + + + +
+
+
+ <<IRAS>> +
+
+
+
+ + <<IRA... + +
+
+ + + + +
+
+
+ send email +
+
+
+
+ + send email + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + +
+
+
+ send email +
+
+
+
+ + send email + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ Record E-Authorisation of Part B Sec. 3 of IRAS +
+
+
+
+ + Record E-Authorisa... + +
+
+ + + + +
+
+
+ Read Log(s) +
+
+
+
+ + Read Log(s) + +
+
+ + + + +
+
+
+ log activity +
+
+
+
+ + log activity + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + +
+
+
+ Modify Study Procedures +
+
+
+
+ + Modify Study Proce... + +
+
+ + + + +
+
+
+ Request invite to Authorise IRAS +
+
+
+
+ + Request invite t... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Usecases/UseCase_Radiology.drawio.svg b/docs/technicaldocs/diagrams/Usecases/UseCase_Radiology.drawio.svg new file mode 100644 index 0000000..dffa244 --- /dev/null +++ b/docs/technicaldocs/diagrams/Usecases/UseCase_Radiology.drawio.svg @@ -0,0 +1,934 @@ + + + + + + + + +
+
+
+ ORRA 3.0 System +
+
+
+
+ + ORRA 3.0 System + +
+
+ + + + + + + + + + +
+
+
+ Research Radiographers +
+
+
+
+ + Resea... + +
+
+ + + + + + + +
+
+
+ Search for +
+ Study Record +
+
+
+
+ + Search for... + +
+
+ + + + +
+
+
+ View Study Record Details +
+
+
+
+ + View Study Record De... + +
+
+ + + + +
+
+
+ Read Study Documents +
+
+
+
+ + Read Study Docum... + +
+
+ + + + +
+
+
+ View Study Procedures +
+
+
+
+ + View Study Proce... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Upload New Files/Documents against a study +
+
+
+
+ + Upload New Files/Doc... + +
+
+ + + + +
+
+
+ Superseed Current Document Files +
+
+
+
+ + Superseed Current Do... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Archive Uploaded +
+ Files / Documents +
+
+
+
+ + Archive Uploaded... + +
+
+ + + + + +
+
+
+ Assess capability to conduct each study procedure +
+
+
+
+ + Assess capability to co... + +
+
+ + + + +
+
+
+ Reject capability +
+
+
+
+ + Reject capability + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Provide Rejection Explaination +
+
+
+
+ + Provide Rejection Ex... + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + +
+
+
+ Assess capacity for all study procedures +
+
+
+
+ + Assess capacity for all... + +
+
+ + + + +
+
+
+ Validate all Study Documentation +
+
+
+
+ + Validate all Study Doc... + +
+
+ + + + +
+
+
+ Assign Categories to a Study +
+
+
+
+ + Assign Categories to... + +
+
+ + + + + + + + +
+
+
+ Modality Leads +
+
+
+
+ + Modal... + +
+
+ + + + +
+
+
+ Request Updates / New Documents +
+
+
+
+ + Request Updates / Ne... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Accept capability +
+
+
+
+ + Accept capability + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<include>> +
+
+
+
+ + <<include>> + +
+
+ + + + +
+
+
+ Request confirmation of capacity for procedure from  Modality Leads +
+
+
+
+ + Request confirmation of capa... + +
+
+ + + + +
+
+
+ add a +
+ comment against procedure +
+
+
+
+ + add a... + +
+
+ + + + + + +
+
+
+ Confrim Site Modality +
+ capacity for procedure +
+
+
+
+ + Confrim Site Modality... + +
+
+ + + + + +
+
+
+ + Confirm Capacity for Procedure + +
+ + Decline Capacity for Procedure + +
+
+
+
+ + Confirm Capacity f... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ View list of +
+ procedures awaiting my confirmation +
+
+
+
+ + View list of... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ ?Change site for each procedure +
+
+
+
+ + ?Change site for each p... + +
+
+ + + + +
+
+
+ add comments to each procedure +
+
+
+
+ + add comments to each pr... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ Radiology Staff +
+
+
+
+ + Radio... + +
+
+ + + + + + + + + + +
+
+
+ Radiology Appointment +
+ Coordinators +
+
+
+
+ + Radio... + +
+
+ + + + + + + + +
+
+
+ Clinical Radiation Expert +
+
+
+
+ + Clini... + +
+
+ + + + +
+
+
+ Perform CRE Review +
+
+
+
+ + Perform CRE Review + +
+
+ + + + +
+
+
+ Request invite +
+ to Authorise IRAS +
+
+
+
+ + Request invite... + +
+
+ + + + + + +
+
+
+ <<IRAS>> +
+
+
+
+ + <<IRA... + +
+
+ + + + +
+
+
+ Record Authorisation of IRAS PB. Sec. 3 +
+
+
+
+ + Record Authorisation of... + +
+
+ + + + +
+
+
+ View List of Patients +
+
+
+
+ + View List of Patients + +
+
+ + + + +
+
+
+ Book a Patient +
+ for their +
+ research scan +
+
+
+
+ + Book a Patient... + +
+
+ + + + +
+
+
+ identify fraction of exposures already performed on Patient +
+
+
+
+ + identify fraction of ex... + +
+
+ + + + +
+
+
+ See all studies the patient is a particpant of +
+
+
+
+ + See all studies the pat... + +
+
+ + + + +
+
+
+ search for +
+ a patient +
+
+
+
+ + search for... + +
+
+ + + + + + +
+
+
+ Actor +
+ generalisation +
+
+
+
+ + Actor... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/diagrams/Usecases/UseCase_TrialCoordination.drawio.svg b/docs/technicaldocs/diagrams/Usecases/UseCase_TrialCoordination.drawio.svg new file mode 100644 index 0000000..b4a0b9a --- /dev/null +++ b/docs/technicaldocs/diagrams/Usecases/UseCase_TrialCoordination.drawio.svg @@ -0,0 +1,652 @@ + + + + + + + + +
+
+
+ ORRA 3.0 System +
+
+
+
+ + ORRA 3.0 System + +
+
+ + + + + + + + + + +
+
+
+ Trial Administrator +
+
+
+
+ + Trial... + +
+
+ + + + + + + +
+
+
+ Principal +
+ Investigator +
+
+
+
+ + Princ... + +
+
+ + + + + +
+
+
+ R&D Team +
+
+
+
+ + R&D T... + +
+
+ + + + +
+
+
+ Search for Studies +
+
+
+
+ + Search for Studies + +
+
+ + + + +
+
+
+ Submit a completed Assurance Request +
+
+
+
+ + Submit a completed Assu... + +
+
+ + + + +
+
+
+ Create a Study Assurance Request +
+
+
+
+ + Create a Study Assuranc... + +
+
+ + + + +
+
+
+ View my Assurance Requests +
+
+
+
+ + View my Assurance Re... + +
+
+ + + + +
+
+
+ Save Progess +
+ For Later +
+
+
+
+ + Save Progess... + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Upload Files +
+
+
+
+ + Upload Files + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Track Progress +
+
+
+
+ + Track Progress + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Read Comments +
+
+
+
+ + Read Comments + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ Reply to comments +
+
+
+
+ + Reply to comments + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ View Study Record of Accepted Requests +
+
+
+
+ + View Study Record of Ac... + +
+
+ + + + + + + + + + + + +
+
+
+ Designated +
+ Study Coordinator +
+
+
+
+ + Desig... + +
+
+ + + + +
+
+
+ Manage Study Details +
+
+
+
+ + Manage Study Details + +
+
+ + + + +
+
+
+ Open an Amendment +
+ against a study +
+
+
+
+ + Open an Amendment... + +
+
+ + + + +
+
+
+ Comment against +
+ study record +
+
+
+
+ + Comment against... + +
+
+ + + + +
+
+
+ Add recruited patients against the study +
+
+
+
+ + Add recruited patients aga... + +
+
+ + + + +
+
+
+ View Approval Journey Progress +
+
+
+
+ + View Approval Journey P... + +
+
+ + + + +
+
+
+ View Study Details +
+
+
+
+ + View Study Details + +
+
+ + + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ View Detailed +
+ Information within each Approval Stage +
+
+
+
+ + View Detailed... + +
+
+ + + + +
+
+
+ Upload Files / Manage Study Document +
+
+
+
+ + Upload Files / Manage Stu... + +
+
+ + + + +
+
+
+ View Documents +
+
+
+
+ + View Documents + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + + +
+
+
+ <<extend>> +
+
+
+
+ + <<extend>> + +
+
+ + + + +
+
+
+ View Costing for Study +
+
+
+
+ + View Costing for Study + +
+
+ + + + + +
+
+
+ Actor +
+ generalisation +
+
+
+
+ + Actor... + +
+
+
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/technicaldocs/qualityassurance/README.md b/docs/technicaldocs/qualityassurance/README.md new file mode 100644 index 0000000..685fa1f --- /dev/null +++ b/docs/technicaldocs/qualityassurance/README.md @@ -0,0 +1 @@ +# Software Quality Assurance Strategy diff --git a/docs/technicaldocs/requirements.md b/docs/technicaldocs/requirements.md new file mode 100644 index 0000000..5ccd2a1 --- /dev/null +++ b/docs/technicaldocs/requirements.md @@ -0,0 +1,7 @@ +# System Requirements + +## Non-Functional + +## Functional + +### User Story Map diff --git a/docs/userdocs/README.md b/docs/userdocs/README.md new file mode 100644 index 0000000..3a51d9a --- /dev/null +++ b/docs/userdocs/README.md @@ -0,0 +1 @@ +# User Documentation diff --git a/docs/userdocs/_sidebar.md b/docs/userdocs/_sidebar.md new file mode 100644 index 0000000..cb6e3b9 --- /dev/null +++ b/docs/userdocs/_sidebar.md @@ -0,0 +1,16 @@ + +* [Home](/) + +* [User Docs](/userdocs/) + * [Getting Started]() + * [Make a Study Assurance Request]() + + * [Research Study]() + * [Search for a Study]() + * [View a Study Record]() + * [Submit an Amendment]() + + * [Approval Workflows]() + * [Approval Worklist]() + * [Worklist Items]() + * \ No newline at end of file diff --git a/src/Application/Application.csproj b/src/Application/Application.csproj new file mode 100644 index 0000000..f3a3dfa --- /dev/null +++ b/src/Application/Application.csproj @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + net5.0 + ORRAS.Application + ORRAS.Application + + + diff --git a/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs b/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs new file mode 100644 index 0000000..42aad4c --- /dev/null +++ b/src/Application/Common/Behaviours/UnhandledExceptionBehaviour.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using Microsoft.Extensions.Logging; + +namespace ORRAS.Application.Common.Behaviours +{ + public class UnhandledExceptionBehaviour : IPipelineBehavior + { + private readonly ILogger _logger; + + public UnhandledExceptionBehaviour(ILogger logger) + { + _logger = logger; + } + + public async Task Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate next) + { + try + { + return await next(); + } + catch (Exception ex) + { + var requestName = typeof(TRequest).Name; + + _logger.LogError(ex, "ORRAS Request: Unhandled Exception for Request {Name} {@Request}", requestName, request); + + throw; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Common/Behaviours/ValidationBehaviour.cs b/src/Application/Common/Behaviours/ValidationBehaviour.cs new file mode 100644 index 0000000..fb6710c --- /dev/null +++ b/src/Application/Common/Behaviours/ValidationBehaviour.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using FluentValidation; +using MediatR; + +namespace ORRAS.Application.Common.Behaviours +{ + public class ValidationBehaviour : IPipelineBehavior + where TRequest : IRequest + { + private readonly IEnumerable> _validators; + public ValidationBehaviour(IEnumerable> validators) + { + _validators = validators; + + } + public async Task Handle(TRequest request, CancellationToken cancellationToken, + RequestHandlerDelegate next) + { + if (_validators.Any()) + { + var context = new ValidationContext(request); + + // valid Requests against all validators found + var validationResults = await Task.WhenAll(_validators.Select(v => + v.ValidateAsync(context, cancellationToken))); + + // collect failures if there where any + var failures = validationResults.SelectMany(r => r.Errors).Where(f => f != null).ToList(); + + // if any validators provided failures, throw the ValidationException + if(failures.Count != 0) + throw new ValidationException(failures); + } + return await next(); + } + } +} \ No newline at end of file diff --git a/src/Application/Common/Exceptions/ForbiddenAccessException.cs b/src/Application/Common/Exceptions/ForbiddenAccessException.cs new file mode 100644 index 0000000..2de63f9 --- /dev/null +++ b/src/Application/Common/Exceptions/ForbiddenAccessException.cs @@ -0,0 +1,10 @@ +using System; +namespace ORRAS.Application.Common.Exceptions +{ + public class ForbiddenAccessException : Exception + { + public ForbiddenAccessException() : base() + { + } + } +} \ No newline at end of file diff --git a/src/Application/Common/Exceptions/NotFoundException.cs b/src/Application/Common/Exceptions/NotFoundException.cs new file mode 100644 index 0000000..8096510 --- /dev/null +++ b/src/Application/Common/Exceptions/NotFoundException.cs @@ -0,0 +1,26 @@ +using System; + +namespace ORRAS.Application.Common.Exceptions +{ + public class NotFoundException : Exception + { + public NotFoundException() + { + } + + public NotFoundException(string message) : base(message) + { + } + + public NotFoundException(string message, Exception innerException) + : base(message, innerException) + { + } + + public NotFoundException(string name, object key) + : base($"A {name} with parameter ='{key}' was not found.") + { + } + + } +} \ No newline at end of file diff --git a/src/Application/Common/Exceptions/ValidationException.cs b/src/Application/Common/Exceptions/ValidationException.cs new file mode 100644 index 0000000..10944ab --- /dev/null +++ b/src/Application/Common/Exceptions/ValidationException.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using FluentValidation.Results; + +namespace ORRAS.Application.Common.Exceptions +{ + public class ValidationException : Exception + { + public ValidationException() : base("One or more validation failures have occurred.") + { + Errors = new Dictionary(); + } + + public ValidationException(IEnumerable failures) : this() + { + Errors = failures + .GroupBy(e => e.PropertyName, e => e.ErrorMessage) + .ToDictionary(failureGroup => failureGroup.Key, failureGroup => failureGroup.ToArray()); + } + + public IDictionary Errors { get;} + } +} \ No newline at end of file diff --git a/src/Application/Common/Interfaces/IApplicationDbContext.cs b/src/Application/Common/Interfaces/IApplicationDbContext.cs new file mode 100644 index 0000000..f016dff --- /dev/null +++ b/src/Application/Common/Interfaces/IApplicationDbContext.cs @@ -0,0 +1,22 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Common.Interfaces +{ + public interface IApplicationDbContext + { + // describe all Dbsets (domain entities) that must be implemented by the ORM + DbSet ImagingModalities { get; set; } + DbSet ImagingProcedures { get; set; } + DbSet Companies { get; set; } + DbSet Departments { get; set; } + DbSet Contacts { get; set; } + DbSet ResearchStudies { get; set; } + + // describe a SaveChangesAsync override method that must be implemented by the ORM + Task SaveChangesAsync(CancellationToken cancellationToken); + } +} \ No newline at end of file diff --git a/src/Application/Common/Interfaces/ICurrentUserService.cs b/src/Application/Common/Interfaces/ICurrentUserService.cs new file mode 100644 index 0000000..3df87c7 --- /dev/null +++ b/src/Application/Common/Interfaces/ICurrentUserService.cs @@ -0,0 +1,8 @@ +using System; +namespace ORRAS.Application.Common.Interfaces +{ + public interface ICurrentUserService + { + string UserId { get; } + } +} \ No newline at end of file diff --git a/src/Application/Common/Interfaces/IDateTime.cs b/src/Application/Common/Interfaces/IDateTime.cs new file mode 100644 index 0000000..b468b88 --- /dev/null +++ b/src/Application/Common/Interfaces/IDateTime.cs @@ -0,0 +1,9 @@ +using System; + +namespace ORRAS.Application.Common.Interfaces +{ + public interface IDateTime + { + DateTime Now { get; } + } +} \ No newline at end of file diff --git a/src/Application/Common/Interfaces/IIdentityService.cs b/src/Application/Common/Interfaces/IIdentityService.cs new file mode 100644 index 0000000..e5891ea --- /dev/null +++ b/src/Application/Common/Interfaces/IIdentityService.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; +using ORRAS.Application.Models; + +namespace ORRAS.Application.Common.Interfaces +{ + public interface IIdentityService + { + Task GetUserNameAsync(string userId); + + Task IsInRoleAsync(string userId, string role); + + Task AuthorizeAsync(string userId, string policyName); + + Task<(Result Result, string UserId)> CreateUserAsync(string userName, string password); + + Task DeleteUserAsync(string userId); + } +} \ No newline at end of file diff --git a/src/Application/Common/Mappings/MappingProfiles.cs b/src/Application/Common/Mappings/MappingProfiles.cs new file mode 100644 index 0000000..c9c1d19 --- /dev/null +++ b/src/Application/Common/Mappings/MappingProfiles.cs @@ -0,0 +1,22 @@ +using AutoMapper; +using ORRAS.Application.Features.Companies.Commands; +using ORRAS.Application.Features.Companies.Queries; +using ORRAS.Application.Features.ResearchStudies.Queries; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Common.Mappings +{ + public class MappingProfiles : Profile + { + public MappingProfiles() + { + CreateMap(); + + CreateMap() + .ForMember(d => d.Departments, o => o.MapFrom(s => s.Departments)); + + CreateMap(); + CreateMap(); + } + } +} \ No newline at end of file diff --git a/src/Application/Extensions/ServiceExtensions.cs b/src/Application/Extensions/ServiceExtensions.cs new file mode 100644 index 0000000..11aa43e --- /dev/null +++ b/src/Application/Extensions/ServiceExtensions.cs @@ -0,0 +1,24 @@ +using System.Reflection; +using FluentValidation; +using MediatR; +using Microsoft.Extensions.DependencyInjection; +using ORRAS.Application.Common.Behaviours; + +namespace ORRAS.Application.Extensions +{ + public static class ServiceExtensions + { + public static IServiceCollection AddApplicationServices(this IServiceCollection services) + { + // Add application services here + + services.AddAutoMapper(Assembly.GetExecutingAssembly()); + services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly()); + services.AddMediatR(Assembly.GetExecutingAssembly()); + services.AddTransient(typeof(IPipelineBehavior<,>), typeof(UnhandledExceptionBehaviour<,>)); + services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehaviour<,>)); + + return services; + } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Commands/CreateCompany.cs b/src/Application/Features/Companies/Commands/CreateCompany.cs new file mode 100644 index 0000000..cefcb25 --- /dev/null +++ b/src/Application/Features/Companies/Commands/CreateCompany.cs @@ -0,0 +1,42 @@ +using System.Security.AccessControl; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using MediatR; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.Companies.Commands +{ + public class CreateCompany + { + public class Command : IRequest + { + public NewCompanyDto Company { get; set; } + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + private readonly IMapper _mapper; + public Handler(IApplicationDbContext context, IMapper mapper) + { + _mapper = mapper; + _context = context; + } + + public async Task Handle(Command request, CancellationToken cancellationToken) + { + var newcompany = _mapper.Map(request.Company); + + _context.Companies.Add(newcompany); + + // TODO: add exception handling for database save error + // https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontext.savechangesasync?view=efcore-5.0 + _ = await _context.SaveChangesAsync(cancellationToken) > 0; + + return Unit.Value; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Commands/CreateCompanyValidator.cs b/src/Application/Features/Companies/Commands/CreateCompanyValidator.cs new file mode 100644 index 0000000..dac055a --- /dev/null +++ b/src/Application/Features/Companies/Commands/CreateCompanyValidator.cs @@ -0,0 +1,32 @@ +using System.Threading; +using System.Threading.Tasks; +using FluentValidation; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.Application.Features.Companies.Commands +{ + public class CreateCompanyValidator : AbstractValidator + { + private readonly IApplicationDbContext _context; + public CreateCompanyValidator(IApplicationDbContext context) + { + _context = context; + + RuleFor(v => v.Company.DisplayName) + .NotEmpty().WithMessage("Company name is required") + .MaximumLength(200).WithMessage("Company name must not exceed 200 characters.") + .MustAsync(BeUniqueCompanyName).WithMessage("The specified company name already exists."); + + RuleFor(v => v.Company.Abbreviation) + .MaximumLength(10).WithMessage("Company Abbreviation must not exceed 10 characters."); + + } + + private async Task BeUniqueCompanyName(string displayName, CancellationToken cancellationToken) + { + return await _context.Companies + .AllAsync(c => c.DisplayName != displayName, cancellationToken); + } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Commands/NewCompanyDto.cs b/src/Application/Features/Companies/Commands/NewCompanyDto.cs new file mode 100644 index 0000000..8419daf --- /dev/null +++ b/src/Application/Features/Companies/Commands/NewCompanyDto.cs @@ -0,0 +1,12 @@ +using System; + +namespace ORRAS.Application.Features.Companies.Commands +{ + public class NewCompanyDto + { + public Guid Id { get; set; } + public string DisplayName { get; set; } + public string Abbreviation { get; set; } + + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Contacts/CreateCompanyContact.cs b/src/Application/Features/Companies/Contacts/CreateCompanyContact.cs new file mode 100644 index 0000000..376485a --- /dev/null +++ b/src/Application/Features/Companies/Contacts/CreateCompanyContact.cs @@ -0,0 +1,8 @@ +namespace ORRAS.Application.Features.Companies.Contacts +{ + + public class CreateCompanyContact + { + + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Contacts/ListCompanyContacts.cs b/src/Application/Features/Companies/Contacts/ListCompanyContacts.cs new file mode 100644 index 0000000..15ee8c7 --- /dev/null +++ b/src/Application/Features/Companies/Contacts/ListCompanyContacts.cs @@ -0,0 +1,7 @@ +namespace ORRAS.Application.Features.Companies.Contacts +{ + public class List + { + + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Queries/CompaniesVm.cs b/src/Application/Features/Companies/Queries/CompaniesVm.cs new file mode 100644 index 0000000..a0fe7af --- /dev/null +++ b/src/Application/Features/Companies/Queries/CompaniesVm.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace ORRAS.Application.Features.Companies.Queries +{ + public class CompaniesVm + { + public IList Companies { get; set; } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Queries/CompanyDto.cs b/src/Application/Features/Companies/Queries/CompanyDto.cs new file mode 100644 index 0000000..f141fb0 --- /dev/null +++ b/src/Application/Features/Companies/Queries/CompanyDto.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace ORRAS.Application.Features.Companies.Queries +{ + public class CompanyDto + { + public CompanyDto() + { + Departments = new List(); + } + + public Guid Id { get; set; } + public string DisplayName { get; set; } + public string Abbreviation { get; set; } + public IList Departments { get; set; } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Queries/DepartmentDto.cs b/src/Application/Features/Companies/Queries/DepartmentDto.cs new file mode 100644 index 0000000..11b6efc --- /dev/null +++ b/src/Application/Features/Companies/Queries/DepartmentDto.cs @@ -0,0 +1,13 @@ +using System; + +namespace ORRAS.Application.Features.Companies.Queries +{ + public class DepartmentDto + { + public Guid Id { get; set; } + public string DepartmentName { get; set; } + public string Acronym { get; set; } + public bool IsDefault { get; set; } = false; + + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Queries/Details.cs b/src/Application/Features/Companies/Queries/Details.cs new file mode 100644 index 0000000..e5f1cea --- /dev/null +++ b/src/Application/Features/Companies/Queries/Details.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; +using MediatR; +using ORRAS.Application.Common.Exceptions; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.Companies.Queries +{ + public class Details + { + public class Query : IRequest + { + public Guid Id { get; set; } + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context) + { + _context = context; + } + + public async Task Handle(Query request, CancellationToken cancellationToken) + { + var company = await _context.Companies.FindAsync(request.Id, cancellationToken); + + if (company == null) + { + throw new NotFoundException("Company", request.Id); + } + + return company; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/Companies/Queries/ListCompanies.cs b/src/Application/Features/Companies/Queries/ListCompanies.cs new file mode 100644 index 0000000..df56420 --- /dev/null +++ b/src/Application/Features/Companies/Queries/ListCompanies.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; +using MediatR; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.Companies.Queries +{ + public class ListCompanies + { + public class Query : IRequest + { + // this is where features like pagenation will go + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + private readonly IMapper _mapper; + public Handler(IApplicationDbContext context, IMapper mapper) + { + _mapper = mapper; + _context = context; + } + + public async Task Handle(Query request, CancellationToken cancellationToken) + { + return new CompaniesVm + { + Companies = await _context.Companies + .AsNoTracking() + .ProjectTo(_mapper.ConfigurationProvider) + .OrderBy(c => c.DisplayName) + .ToListAsync(cancellationToken) + }; + + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ImagingModalities/Details.cs b/src/Application/Features/ImagingModalities/Details.cs new file mode 100644 index 0000000..ab29494 --- /dev/null +++ b/src/Application/Features/ImagingModalities/Details.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.ImagingModalities +{ + public class Details + { + public class Query : IRequest + { + public Guid Id { get; set; } + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context) + { + _context = context; + + } + public async Task Handle(Query request, CancellationToken cancellationToken) + { + var modality = await _context.ImagingModalities.FindAsync(request.Id, cancellationToken); + return modality; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ImagingModalities/List.cs b/src/Application/Features/ImagingModalities/List.cs new file mode 100644 index 0000000..101c4d0 --- /dev/null +++ b/src/Application/Features/ImagingModalities/List.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.ImagingModalities +{ + public class List + { + public class Query : IRequest> { } + + public class Handler : IRequestHandler> + { + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context) + { + _context = context; + + } + + public async Task> Handle(Query request, CancellationToken cancellationToken) + { + var modalities = await _context.ImagingModalities.ToListAsync(cancellationToken); + + return modalities; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ImagingProcedures/Details.cs b/src/Application/Features/ImagingProcedures/Details.cs new file mode 100644 index 0000000..b8f9c30 --- /dev/null +++ b/src/Application/Features/ImagingProcedures/Details.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.ImagingProcedures +{ + public class Details + { + public class Query : IRequest + { + public Guid Id { get; set; } + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context) + { + _context = context; + } + + public async Task Handle(Query request, CancellationToken cancellationToken) + { + var procedures = await _context.ImagingProcedures.FindAsync(request.Id, cancellationToken); + + return procedures; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ImagingProcedures/List.cs b/src/Application/Features/ImagingProcedures/List.cs new file mode 100644 index 0000000..9ed5495 --- /dev/null +++ b/src/Application/Features/ImagingProcedures/List.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; + +namespace ORRAS.Application.Features.ImagingProcedures +{ + public class List + { + public class Query : IRequest> {} + + public class Handler : IRequestHandler> + { + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context) + { + _context = context; + } + + public async Task> Handle(Query request, CancellationToken cancellationToken) + { + var procedures = await _context.ImagingProcedures.ToListAsync(cancellationToken); + + return procedures; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ResearchStudies/Queries/GetStudy.cs b/src/Application/Features/ResearchStudies/Queries/GetStudy.cs new file mode 100644 index 0000000..d591428 --- /dev/null +++ b/src/Application/Features/ResearchStudies/Queries/GetStudy.cs @@ -0,0 +1,43 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; +using MediatR; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Exceptions; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.Application.Features.ResearchStudies.Queries +{ + public class GetStudy + { + public class Query : IRequest + { + public Guid Id { get; set; } + } + + public class Handler : IRequestHandler + { + private readonly IApplicationDbContext _context; + private readonly IMapper _mapper; + public Handler(IApplicationDbContext context, IMapper mapper) + { + _mapper = mapper; + _context = context; + + } + + public async Task Handle(Query request, CancellationToken cancellationToken) + { + var study = await _context.ResearchStudies + .ProjectTo(_mapper.ConfigurationProvider) + .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); + + if(study == null) throw new NotFoundException("Study", request.Id); + + return study; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ResearchStudies/Queries/ListStudies.cs b/src/Application/Features/ResearchStudies/Queries/ListStudies.cs new file mode 100644 index 0000000..d13501d --- /dev/null +++ b/src/Application/Features/ResearchStudies/Queries/ListStudies.cs @@ -0,0 +1,43 @@ +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; +using MediatR; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.Application.Features.ResearchStudies.Queries +{ + public class ListStudies + { + public class Query : IRequest + { + + } + + public class Handler : IRequestHandler + { + private readonly IMapper _mapper; + private readonly IApplicationDbContext _context; + public Handler(IApplicationDbContext context, IMapper mapper) + { + _context = context; + _mapper = mapper; + + } + + public async Task Handle(Query request, CancellationToken cancellationToken) + { + return new StudiesVm + { + Studies = await _context.ResearchStudies + .AsNoTracking() + .ProjectTo(_mapper.ConfigurationProvider) + .OrderBy(c => c.Acronym) + .ToListAsync(cancellationToken) + }; + } + } + } +} \ No newline at end of file diff --git a/src/Application/Features/ResearchStudies/Queries/ResearchStudyDto.cs b/src/Application/Features/ResearchStudies/Queries/ResearchStudyDto.cs new file mode 100644 index 0000000..daedf9f --- /dev/null +++ b/src/Application/Features/ResearchStudies/Queries/ResearchStudyDto.cs @@ -0,0 +1,18 @@ +using System; + +namespace ORRAS.Application.Features.ResearchStudies.Queries +{ + public class ResearchStudyDto + { + public Guid Id { get; set; } + public string LocalPID { get; set; } + public string IrasProjectID { get; set; } + public string EudraCTReference { get; set; } + public string HRAReference { get; set; } + public string ShortTitle { get; set; } + public string Acronym { get; set; } + public string LongTitle { get; set; } + public DateTime Created { get; set; } + public DateTime EstimatedStartDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Application/Features/ResearchStudies/Queries/StudiesVm.cs b/src/Application/Features/ResearchStudies/Queries/StudiesVm.cs new file mode 100644 index 0000000..101d248 --- /dev/null +++ b/src/Application/Features/ResearchStudies/Queries/StudiesVm.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace ORRAS.Application.Features.ResearchStudies.Queries +{ + public class StudiesVm + { + public IList Studies { get; set;} + } +} \ No newline at end of file diff --git a/src/Application/Features/WeatherForecasts/Queries/GetWeatherForecastsQuery.cs b/src/Application/Features/WeatherForecasts/Queries/GetWeatherForecastsQuery.cs new file mode 100644 index 0000000..026ae11 --- /dev/null +++ b/src/Application/Features/WeatherForecasts/Queries/GetWeatherForecastsQuery.cs @@ -0,0 +1,35 @@ +using MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace ORRAS.Application.Features.WeatherForecasts.Queries +{ + public class GetWeatherForecastsQuery : IRequest> + { + } + + public class GetWeatherForecastsQueryHandler : IRequestHandler> + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + public Task> Handle(GetWeatherForecastsQuery request, CancellationToken cancellationToken) + { + var rng = new Random(); + + var vm = Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateTime.Now.AddDays(index), + TemperatureC = rng.Next(-20, 55), + Summary = Summaries[rng.Next(Summaries.Length)] + }); + + return Task.FromResult(vm); + } + } +} diff --git a/src/Application/Features/WeatherForecasts/Queries/WeatherForecast.cs b/src/Application/Features/WeatherForecasts/Queries/WeatherForecast.cs new file mode 100644 index 0000000..1126485 --- /dev/null +++ b/src/Application/Features/WeatherForecasts/Queries/WeatherForecast.cs @@ -0,0 +1,15 @@ +using System; + +namespace ORRAS.Application.Features.WeatherForecasts.Queries +{ + public class WeatherForecast + { + public DateTime Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string Summary { get; set; } + } +} diff --git a/src/Application/Models/Result.cs b/src/Application/Models/Result.cs new file mode 100644 index 0000000..b638f9b --- /dev/null +++ b/src/Application/Models/Result.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace ORRAS.Application.Models +{ + public class Result + { + internal Result(bool succeeded, IEnumerable errors) + { + Succeeded = succeeded; + Errors = errors.ToArray(); + } + + public bool Succeeded { get; set; } + + public string[] Errors { get; set; } + + public static Result Success() + { + return new Result(true, Array.Empty()); + } + + public static Result Failure(IEnumerable errors) + { + return new Result(false, errors); + } + } +} \ No newline at end of file diff --git a/src/Domain/Common/AuditableEntity.cs b/src/Domain/Common/AuditableEntity.cs new file mode 100644 index 0000000..c9a37a0 --- /dev/null +++ b/src/Domain/Common/AuditableEntity.cs @@ -0,0 +1,17 @@ +using System; + +namespace ORRAS.Domain.Common +{ + public class AuditableEntity + { + public DateTime Created { get; set; } + + // will need to implement a current user service for these + // public string CreatedBy { get; set; } + + public DateTime? LastModified { get; set; } + + // will need to implement a current user service for these + // public string LastModifiedBy { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Common/Person.cs b/src/Domain/Common/Person.cs new file mode 100644 index 0000000..a919dc6 --- /dev/null +++ b/src/Domain/Common/Person.cs @@ -0,0 +1,14 @@ +using System; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public abstract class Person : AuditableEntity + { + public Guid Id { get; set; } + public string FirstName { get; set; } + public string MiddleName { get; set; } + public string LastName { get; set; } + + } +} \ No newline at end of file diff --git a/src/Domain/Common/ValueObject.cs b/src/Domain/Common/ValueObject.cs new file mode 100644 index 0000000..4c1bbab --- /dev/null +++ b/src/Domain/Common/ValueObject.cs @@ -0,0 +1,41 @@ +namespace ORRAS.Domain.Common +{ + public abstract class ValueObject where T : ValueObject + { + public override bool Equals(object obj) + { + var valueObject = obj as T; + + if (ReferenceEquals(valueObject, null)) + { + return false; + } + return EqualsCore(valueObject); + } + + protected abstract bool EqualsCore(T valueObject); + + public static bool operator ==(ValueObject left, ValueObject right) + { + if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) + return true; + + if (ReferenceEquals(left, null) || ReferenceEquals(right, null)) + return false; + + return left.Equals(right); + } + + public static bool operator !=(ValueObject left, ValueObject right) + { + return !(left == right); + } + + public override int GetHashCode() + { + return GetHashCodeCore(); + } + protected abstract int GetHashCodeCore(); + + } +} \ No newline at end of file diff --git a/src/Domain/Domain.csproj b/src/Domain/Domain.csproj new file mode 100644 index 0000000..a3a901d --- /dev/null +++ b/src/Domain/Domain.csproj @@ -0,0 +1,9 @@ + + + + net5.0 + ORRAS.Domain + ORRAS.Domain + + + diff --git a/src/Domain/Entities/AssuranceRequest.cs b/src/Domain/Entities/AssuranceRequest.cs new file mode 100644 index 0000000..121f642 --- /dev/null +++ b/src/Domain/Entities/AssuranceRequest.cs @@ -0,0 +1,10 @@ +using System; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class AssuranceRequest : AuditableEntity + { + public Guid Id { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ChiefInvestigator.cs b/src/Domain/Entities/ChiefInvestigator.cs new file mode 100644 index 0000000..70a51b6 --- /dev/null +++ b/src/Domain/Entities/ChiefInvestigator.cs @@ -0,0 +1,12 @@ +using System; + +namespace ORRAS.Domain.Entities +{ + public class ChiefInvestigator + { + public string AppUserId { get; set; } + public ResearchStudy ResearchStudy { get; set; } + public Guid ResearchStudyId { get; set; } + public bool IsPrimary { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ClinicalResearchCategory.cs b/src/Domain/Entities/ClinicalResearchCategory.cs new file mode 100644 index 0000000..9b07a6f --- /dev/null +++ b/src/Domain/Entities/ClinicalResearchCategory.cs @@ -0,0 +1,8 @@ +namespace ORRAS.Domain.Entities +{ + public class ClinicalResearchCategory + { + public int Id { get; set; } + public string CategoryTitle { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/Comment.cs b/src/Domain/Entities/Comment.cs new file mode 100644 index 0000000..2d77cdd --- /dev/null +++ b/src/Domain/Entities/Comment.cs @@ -0,0 +1,14 @@ +using System; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class Comment : AuditableEntity + { + public Guid Id { get; set; } + public string Content { get; set; } + public string CreatorId { get; set; } + public Comment ParentComment { get; set; } + public Guid ParentCommentId { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/Company.cs b/src/Domain/Entities/Company.cs new file mode 100644 index 0000000..611475f --- /dev/null +++ b/src/Domain/Entities/Company.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class Company : AuditableEntity + { + public Guid Id { get; set; } + public string DisplayName { get; set; } + public string Abbreviation { get; set; } + public bool IsDeleted { get; set; } = false; + public ICollection Departments { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Domain/Entities/Contact.cs b/src/Domain/Entities/Contact.cs new file mode 100644 index 0000000..dbd31a6 --- /dev/null +++ b/src/Domain/Entities/Contact.cs @@ -0,0 +1,16 @@ +using System; + +namespace ORRAS.Domain.Entities +{ + public class Contact : Person + { + public string JobTitle { get; set; } + public Department Department { get; set; } + public Guid DepartmentId { get; set; } + public string Qualification { get; set; } + // this could be a collection of EmailAddresses with a default flag for one in the collection + public string EmailAddress { get; set; } + // this could be a collection of Telephone Objects + public string TelephoneNumber { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/Department.cs b/src/Domain/Entities/Department.cs new file mode 100644 index 0000000..9f5a452 --- /dev/null +++ b/src/Domain/Entities/Department.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using System; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class Department : AuditableEntity + { + public Guid Id { get; set; } + public Company Company { get; set; } + public Guid CompanyId { get; set; } + public string DepartmentName { get; set; } + public string Acronym { get; set; } + public bool IsDefault { get; set; } = false; + public ICollection Contacts { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Domain/Entities/Document.cs b/src/Domain/Entities/Document.cs new file mode 100644 index 0000000..49eb20f --- /dev/null +++ b/src/Domain/Entities/Document.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; + +namespace ORRAS.Domain.Entities +{ + public class Document + { + public Guid Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public DocumentCategory Category { get; set; } + public ICollection Files { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Domain/Entities/DocumentCategory.cs b/src/Domain/Entities/DocumentCategory.cs new file mode 100644 index 0000000..ebab6aa --- /dev/null +++ b/src/Domain/Entities/DocumentCategory.cs @@ -0,0 +1,9 @@ +namespace ORRAS.Domain.Entities +{ + public class DocumentCategory + { + public int Id { get; set; } + public string DisplayName { get; set; } + public bool IsDeleted { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/File.cs b/src/Domain/Entities/File.cs new file mode 100644 index 0000000..c1616d3 --- /dev/null +++ b/src/Domain/Entities/File.cs @@ -0,0 +1,14 @@ +using System; + +namespace ORRAS.Domain.Entities +{ + public class File + { + public Guid Id { get; set; } + public Document Document { get; set; } + public Guid DocumentId { get; set; } + public float Version { get; set; } + public bool IsSuperseeded { get; set; } + public byte MyProperty { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ImagingModality.cs b/src/Domain/Entities/ImagingModality.cs new file mode 100644 index 0000000..f04fd0e --- /dev/null +++ b/src/Domain/Entities/ImagingModality.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class ImagingModality : AuditableEntity + { + public Guid Id { get; set; } + public string ModalityCode { get; set; } + public string ModalityName { get; set; } + public bool IsDeleted { get; set; } + public ICollection ImagingProcedures { get; private set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ImagingProcedure.cs b/src/Domain/Entities/ImagingProcedure.cs new file mode 100644 index 0000000..6f3f46a --- /dev/null +++ b/src/Domain/Entities/ImagingProcedure.cs @@ -0,0 +1,24 @@ +using System; +using ORRAS.Domain.Common; +using ORRAS.Domain.Enums; + +namespace ORRAS.Domain.Entities +{ + public class ImagingProcedure : AuditableEntity + { + public int Id { get; set; } + public string ShortCode { get; set; } + public string DisplayTerm { get; set; } + public ImagingProcedureStatus Status { get; set; } = ImagingProcedureStatus.Active; + public string RecommendedSubstituteProcedure { get; set; } + public ImagingModality Modality { get; set; } + public Guid ModalityId { get; set; } + public string SNOMEDCT_ConceptID { get; set; } + public string SNOMEDCT_LateralityID { get; set; } + public string SNOMEDCT_FSN { get; set; } + public int BodyPartMultiplicationFactor { get; set; } + public bool IsInterventional { get; set; } + public bool IsDiagnostic { get; set; } + public bool IsDeprecated { get; set; } = false; + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ImagingProcedureModifier.cs b/src/Domain/Entities/ImagingProcedureModifier.cs new file mode 100644 index 0000000..d932087 --- /dev/null +++ b/src/Domain/Entities/ImagingProcedureModifier.cs @@ -0,0 +1,10 @@ +namespace ORRAS.Domain.Entities +{ + public class ImagingProcedureModifier + { + public int Id { get; set; } + public string ModifierName { get; set; } + public string ModifierCode { get; set; } + public ImagingProcedureModifierType Type { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ImagingProcedureModifierType.cs b/src/Domain/Entities/ImagingProcedureModifierType.cs new file mode 100644 index 0000000..54f67d3 --- /dev/null +++ b/src/Domain/Entities/ImagingProcedureModifierType.cs @@ -0,0 +1,13 @@ +using System; +namespace ORRAS.Domain.Entities +{ + public class ImagingProcedureModifierType + { + public int Id { get; set; } + public string DisplayName { get; set; } + public string ShortCode { get; set; } + public ImagingModality Modality { get; set; } + public Guid ModalityId { get; set; } + public bool IsDeleted { get; set; } = false; + } +} \ No newline at end of file diff --git a/src/Domain/Entities/PrincipalInvestigator.cs b/src/Domain/Entities/PrincipalInvestigator.cs new file mode 100644 index 0000000..d379134 --- /dev/null +++ b/src/Domain/Entities/PrincipalInvestigator.cs @@ -0,0 +1,12 @@ +using System; + +namespace ORRAS.Domain.Entities +{ + public class PrincipalInvestigator + { + public string AppUserId { get; set; } + public ResearchStudy ResearchStudy { get; set; } + public Guid ResearchStudyId { get; set; } + public bool IsPrimary { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ResearchStudy.cs b/src/Domain/Entities/ResearchStudy.cs new file mode 100644 index 0000000..555f5e7 --- /dev/null +++ b/src/Domain/Entities/ResearchStudy.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class ResearchStudy : AuditableEntity + { + public Guid Id { get; set; } + public string LocalPID { get; set; } + public string IrasProjectID { get; set; } + public string EudraCTReference { get; set; } + public string HRAReference { get; set; } + public string ShortTitle { get; set; } + public string Acronym { get; set; } + public string LongTitle { get; set; } + + // commented out for simplicity for prototype + + // public ClinicalResearchCategory ResearchCategory { get; set; } + // public int ResearchTypeId { get; set; } + public DateTime EstimatedStartDate { get; set; } + public DateTime EstimatedEndDate { get; set; } + public float EstimatedTotalDurationInMonths { get; set; } + public Boolean IsInvolvingMedicalDeviceTrial { get; set; } = false; + public Boolean IsInvolvingRadiotherapy { get; set; } = false; + public Boolean IsInvolvingRadioactiveSubstances { get; set; } = false; + public Boolean IsMultiCentre { get; set; } = false; + public int NumberOfUKCentres { get; set; } + + // commented out for simplicity for prototype + + // public ICollection ReseachStudyComments { get; set; } = new List(); + // public ICollection StudyCoordinators { get; set; } = new List(); + // public ICollection PrincipalInvestigators { get; set; } = new List(); + // public ICollection ChiefInvestigators { get; set; } = new List(); + // public ICollection StudyDocuments { get; set; } = new List(); + // public Company StudySponsor { get; set; } + // public Guid StudySponsorId { get; set; } + + } +} \ No newline at end of file diff --git a/src/Domain/Entities/ResearchStudyProtocol.cs b/src/Domain/Entities/ResearchStudyProtocol.cs new file mode 100644 index 0000000..599a0ad --- /dev/null +++ b/src/Domain/Entities/ResearchStudyProtocol.cs @@ -0,0 +1,10 @@ +using System; +namespace ORRAS.Domain.Entities +{ + public class ResearchStudyProtocol + { + public Guid Id { get; set; } + public bool IsSuperseeded { get; set; } + public DateTime Version { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/StudyCoordinator.cs b/src/Domain/Entities/StudyCoordinator.cs new file mode 100644 index 0000000..1cf5452 --- /dev/null +++ b/src/Domain/Entities/StudyCoordinator.cs @@ -0,0 +1,13 @@ +using System; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.Entities +{ + public class StudyCoordinator : AuditableEntity + { + public string AppUserId { get; set; } + public ResearchStudy ResearchStudy { get; set; } + public Guid ResearchStudyId { get; set; } + public bool IsPrimary { get; set; } + } +} \ No newline at end of file diff --git a/src/Domain/Entities/StudyParticipant.cs b/src/Domain/Entities/StudyParticipant.cs new file mode 100644 index 0000000..1440da5 --- /dev/null +++ b/src/Domain/Entities/StudyParticipant.cs @@ -0,0 +1,13 @@ +using System; + +namespace ORRAS.Domain.Entities +{ + public class StudyParticipant + { + public Guid Id { get; set; } + + // public NHSNumber NHSNumber { get; } + + + } +} \ No newline at end of file diff --git a/src/Domain/Enums/ImagingProcedureStatus.cs b/src/Domain/Enums/ImagingProcedureStatus.cs new file mode 100644 index 0000000..ebdd691 --- /dev/null +++ b/src/Domain/Enums/ImagingProcedureStatus.cs @@ -0,0 +1,9 @@ +namespace ORRAS.Domain.Enums +{ + public enum ImagingProcedureStatus + { + Active = 0, + Inactive = 1, + Retired = 2 + } +} \ No newline at end of file diff --git a/src/Domain/Enums/PersonTitle.cs b/src/Domain/Enums/PersonTitle.cs new file mode 100644 index 0000000..336317d --- /dev/null +++ b/src/Domain/Enums/PersonTitle.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; +using System.Collections.Generic; +namespace ORRAS.Domain.Entities.Enums +{ + public class PersonTitle + { + public static PersonTitle Mr { get; } = new PersonTitle(0, "Mr"); + public static PersonTitle Mrs { get; } = new PersonTitle(1, "Mrs"); + public static PersonTitle Ms { get; } = new PersonTitle(2, "Ms"); + public static PersonTitle Miss { get; } = new PersonTitle(3, "Miss"); + public static PersonTitle Dr { get; } = new PersonTitle(4, "Dr"); + public static PersonTitle Professor { get; } = new PersonTitle(5, "Prof."); + + + public string Title { get; private set; } + public int Value { get; private set; } + + private PersonTitle(int value, string title) + { + Value = value; + Title = title; + } + + private PersonTitle(){} + + public static IEnumerable List() + { + return new[] { Mr, Mrs, Ms, Miss, Dr, Professor }; + } + public static PersonTitle FromString(string personTitleString) + { + return List().FirstOrDefault(r => String.Equals(r.Title, personTitleString, StringComparison.OrdinalIgnoreCase)); + } + + public static PersonTitle FromValue(int value) + { + return List().FirstOrDefault(r => r.Value == value); + } + + } +} \ No newline at end of file diff --git a/src/Domain/ValueObjects/Address.cs b/src/Domain/ValueObjects/Address.cs new file mode 100644 index 0000000..c85f082 --- /dev/null +++ b/src/Domain/ValueObjects/Address.cs @@ -0,0 +1,42 @@ +using System.Diagnostics.Contracts; +using System.Collections.Generic; +using ORRAS.Domain.Common; + +namespace ORRAS.Domain.ValueObjects +{ + // Move info here https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/implement-value-objects + public class Address : ValueObject
+ { + public virtual string Line1 { get; private set; } + public virtual string Line2 { get; private set; } + public virtual string City { get; private set; } + public virtual string County { get; private set; } + public virtual string Country { get; private set; } + public virtual string PostalCode { get; private set; } + + public Address() { } + + public Address(string line1, string line2, string city, string county, string country, string postalcode) + { + // Contracts.EnsureNotNull(line1, city, ); + Line1 = line1; + Line2 = line2; + City = city; + County = county; + Country = country; + PostalCode = postalcode; + } + + protected override bool EqualsCore(Address valueObject) + { + // TODO: Implement Equality Check + throw new System.NotImplementedException(); + } + + protected override int GetHashCodeCore() + { + // TODO: implement HashCode overide + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Identity/AppUser.cs b/src/Infrastructure/Identity/AppUser.cs new file mode 100644 index 0000000..bb5fc36 --- /dev/null +++ b/src/Infrastructure/Identity/AppUser.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Identity; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.Infrastructure.Identity +{ + public class AppUser : IdentityUser + { + public string DisplayName { get; set; } + public string JobTitle { get; set; } + + } +} \ No newline at end of file diff --git a/src/Infrastructure/Identity/Extensions/ServiceExtensions.cs b/src/Infrastructure/Identity/Extensions/ServiceExtensions.cs new file mode 100644 index 0000000..e689d42 --- /dev/null +++ b/src/Infrastructure/Identity/Extensions/ServiceExtensions.cs @@ -0,0 +1,17 @@ + +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using ORRAS.Infrastructure.Persistence; + +namespace ORRAS.Infrastructure.Identity.Extensions +{ + public static class ServiceExtensions + { + public static IServiceCollection Add(this IServiceCollection services, IConfiguration config) + { + + + return services; + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Identity/Services/IdentityService.cs b/src/Infrastructure/Identity/Services/IdentityService.cs new file mode 100644 index 0000000..6ad264f --- /dev/null +++ b/src/Infrastructure/Identity/Services/IdentityService.cs @@ -0,0 +1,34 @@ +using System.Threading.Tasks; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Application.Models; + +namespace ORRAS.Infrastructure.Identity.Services +{ + public class IdentityService : IIdentityService + { + public Task AuthorizeAsync(string userId, string policyName) + { + throw new System.NotImplementedException(); + } + + public Task<(Result Result, string UserId)> CreateUserAsync(string userName, string password) + { + throw new System.NotImplementedException(); + } + + public Task DeleteUserAsync(string userId) + { + throw new System.NotImplementedException(); + } + + public Task GetUserNameAsync(string userId) + { + throw new System.NotImplementedException(); + } + + public Task IsInRoleAsync(string userId, string role) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Infrastructure.csproj b/src/Infrastructure/Infrastructure.csproj new file mode 100644 index 0000000..a7bbb46 --- /dev/null +++ b/src/Infrastructure/Infrastructure.csproj @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + net5.0 + ORRAS.Infrastructure + ORRAS.Infrastructure + + + diff --git a/src/Infrastructure/Persistence/ApplicationDbContext.cs b/src/Infrastructure/Persistence/ApplicationDbContext.cs new file mode 100644 index 0000000..c1bf8fc --- /dev/null +++ b/src/Infrastructure/Persistence/ApplicationDbContext.cs @@ -0,0 +1,72 @@ +using System.Reflection; +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Domain.Entities; +using ORRAS.Domain.Common; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using ORRAS.Infrastructure.Identity; + +namespace ORRAS.Infrastructure.Persistence +{ + public class ApplicationDbContext : IdentityDbContext, IApplicationDbContext + { + private readonly IDateTime _dateTime; + public ApplicationDbContext(DbContextOptions options, + IDateTime dateTime) : base(options) + { + _dateTime = dateTime; + } + + // All DbSets + public DbSet ImagingModalities { get; set; } + public DbSet ImagingProcedures { get; set; } + public DbSet Companies { get; set; } + public DbSet Departments { get; set; } + public DbSet Contacts { get; set; } + public DbSet ResearchStudies { get; set; } + + // Save method + + public override async Task SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) + { + // build the save entity bahaviour here + + foreach (Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry entry in ChangeTracker.Entries()) + { + // switch between the entry's state + switch (entry.State) + { + case EntityState.Added: + // set user who created it + + // set date created + entry.Entity.Created = _dateTime.Now; + break; + case EntityState.Modified: + // set user who modified it + + // set date of modification + entry.Entity.LastModified = _dateTime.Now; + break; + } + } + + + var result = await base.SaveChangesAsync(cancellationToken); + + return result; + } + + // override OnModelCreation to add entity configurations using fluentAPI + protected override void OnModelCreating(ModelBuilder builder) + { + builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); + + base.OnModelCreating(builder); + } + + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Configurations/CompanyConfiguration.cs b/src/Infrastructure/Persistence/Configurations/CompanyConfiguration.cs new file mode 100644 index 0000000..f9987ad --- /dev/null +++ b/src/Infrastructure/Persistence/Configurations/CompanyConfiguration.cs @@ -0,0 +1,14 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using ORRAS.Domain.Entities; + +namespace ORRAS.Infrastructure.Persistence.Configurations +{ + public class CompanyConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Configurations/ContactConfiguration.cs b/src/Infrastructure/Persistence/Configurations/ContactConfiguration.cs new file mode 100644 index 0000000..927d85d --- /dev/null +++ b/src/Infrastructure/Persistence/Configurations/ContactConfiguration.cs @@ -0,0 +1,17 @@ +using System.Collections.Immutable; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using ORRAS.Domain.Entities; + +namespace ORRAS.Infrastructure.Persistence.Configurations +{ + public class ContactConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasOne(c => c.Department) + .WithMany(d => d.Contacts) + .HasForeignKey(c => c.DepartmentId); + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Configurations/DepartmentConfiguration.cs b/src/Infrastructure/Persistence/Configurations/DepartmentConfiguration.cs new file mode 100644 index 0000000..a457b15 --- /dev/null +++ b/src/Infrastructure/Persistence/Configurations/DepartmentConfiguration.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using ORRAS.Domain.Entities; + +namespace ORRAS.Infrastructure.Persistence.Configurations +{ + public class DepartmentConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasOne(o => o.Company) + .WithMany(d => d.Departments) + .HasForeignKey(o => o.CompanyId); + + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Configurations/ImagingModalityConfiguration.cs b/src/Infrastructure/Persistence/Configurations/ImagingModalityConfiguration.cs new file mode 100644 index 0000000..a5e23e1 --- /dev/null +++ b/src/Infrastructure/Persistence/Configurations/ImagingModalityConfiguration.cs @@ -0,0 +1,15 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using ORRAS.Domain.Entities; + +namespace ORRAS.Infrastructure.Persistence.Configurations +{ + public class ImagingModalityConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasIndex(m => m.ModalityCode); + + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Configurations/ImagingProcedureConfiguration.cs b/src/Infrastructure/Persistence/Configurations/ImagingProcedureConfiguration.cs new file mode 100644 index 0000000..f1fd036 --- /dev/null +++ b/src/Infrastructure/Persistence/Configurations/ImagingProcedureConfiguration.cs @@ -0,0 +1,19 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using ORRAS.Domain.Entities; + +namespace ORRAS.Infrastructure.Persistence.Configurations +{ + public class ImagingProcedureConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasOne(e => e.Modality) + .WithMany(m => m.ImagingProcedures) + .HasForeignKey(e => e.ModalityId); + + builder.Property(c => c.Status) + .HasConversion(); + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Extensions/ServiceExtensions.cs b/src/Infrastructure/Persistence/Extensions/ServiceExtensions.cs new file mode 100644 index 0000000..3e7d9ef --- /dev/null +++ b/src/Infrastructure/Persistence/Extensions/ServiceExtensions.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using ORRAS.Application.Common.Interfaces; +using ORRAS.Infrastructure.Identity; +using ORRAS.Infrastructure.Services; + +namespace ORRAS.Infrastructure.Persistence.Extensions +{ + public static class ServiceExtensions + { + public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, IConfiguration config) + { + // build services here + + services.AddDbContext(options => + options.UseSqlServer(config.GetConnectionString("AzureSQL"), + b => b.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName))); + + + services.AddScoped(provider => provider.GetService()); + + services.AddTransient(); + + + return services; + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.Designer.cs b/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.Designer.cs new file mode 100644 index 0000000..65edd6b --- /dev/null +++ b/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.Designer.cs @@ -0,0 +1,573 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using ORRAS.Infrastructure.Persistence; + +namespace ORRAS.Infrastructure.Persistence.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20210613220608_InitAzureDb")] + partial class InitAzureDb + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.6") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Abbreviation") + .HasColumnType("nvarchar(max)"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.ToTable("Companies"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property("EmailAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .HasColumnType("nvarchar(max)"); + + b.Property("JobTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("LastName") + .HasColumnType("nvarchar(max)"); + + b.Property("MiddleName") + .HasColumnType("nvarchar(max)"); + + b.Property("Qualification") + .HasColumnType("nvarchar(max)"); + + b.Property("TelephoneNumber") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Contacts"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Acronym") + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DepartmentName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("CompanyId"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingModality", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("ModalityCode") + .HasColumnType("nvarchar(450)"); + + b.Property("ModalityName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ModalityCode"); + + b.ToTable("ImagingModalities"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingProcedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("BodyPartMultiplicationFactor") + .HasColumnType("int"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DisplayTerm") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeprecated") + .HasColumnType("bit"); + + b.Property("IsDiagnostic") + .HasColumnType("bit"); + + b.Property("IsInterventional") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("ModalityId") + .HasColumnType("uniqueidentifier"); + + b.Property("RecommendedSubstituteProcedure") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_ConceptID") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_FSN") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_LateralityID") + .HasColumnType("nvarchar(max)"); + + b.Property("ShortCode") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModalityId"); + + b.ToTable("ImagingProcedures"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ResearchStudy", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Acronym") + .HasColumnType("nvarchar(max)"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("EstimatedEndDate") + .HasColumnType("datetime2"); + + b.Property("EstimatedStartDate") + .HasColumnType("datetime2"); + + b.Property("EstimatedTotalDurationInMonths") + .HasColumnType("real"); + + b.Property("EudraCTReference") + .HasColumnType("nvarchar(max)"); + + b.Property("HRAReference") + .HasColumnType("nvarchar(max)"); + + b.Property("IrasProjectID") + .HasColumnType("nvarchar(max)"); + + b.Property("IsInvolvingMedicalDeviceTrial") + .HasColumnType("bit"); + + b.Property("IsInvolvingRadioactiveSubstances") + .HasColumnType("bit"); + + b.Property("IsInvolvingRadiotherapy") + .HasColumnType("bit"); + + b.Property("IsMultiCentre") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("LocalPID") + .HasColumnType("nvarchar(max)"); + + b.Property("LongTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberOfUKCentres") + .HasColumnType("int"); + + b.Property("ShortTitle") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ResearchStudies"); + }); + + modelBuilder.Entity("ORRAS.Infrastructure.Identity.AppUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("JobTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Contact", b => + { + b.HasOne("ORRAS.Domain.Entities.Department", "Department") + .WithMany("Contacts") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.HasOne("ORRAS.Domain.Entities.Company", "Company") + .WithMany("Departments") + .HasForeignKey("CompanyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingProcedure", b => + { + b.HasOne("ORRAS.Domain.Entities.ImagingModality", "Modality") + .WithMany("ImagingProcedures") + .HasForeignKey("ModalityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Modality"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Company", b => + { + b.Navigation("Departments"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingModality", b => + { + b.Navigation("ImagingProcedures"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.cs b/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.cs new file mode 100644 index 0000000..b6b350d --- /dev/null +++ b/src/Infrastructure/Persistence/Migrations/20210613220608_InitAzureDb.cs @@ -0,0 +1,401 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace ORRAS.Infrastructure.Persistence.Migrations +{ + public partial class InitAzureDb : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AspNetRoles", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetUsers", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + JobTitle = table.Column(type: "nvarchar(max)", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + EmailConfirmed = table.Column(type: "bit", nullable: false), + PasswordHash = table.Column(type: "nvarchar(max)", nullable: true), + SecurityStamp = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false), + AccessFailedCount = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Companies", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + Abbreviation = table.Column(type: "nvarchar(max)", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Companies", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ImagingModalities", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ModalityCode = table.Column(type: "nvarchar(450)", nullable: true), + ModalityName = table.Column(type: "nvarchar(max)", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ImagingModalities", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ResearchStudies", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + LocalPID = table.Column(type: "nvarchar(max)", nullable: true), + IrasProjectID = table.Column(type: "nvarchar(max)", nullable: true), + EudraCTReference = table.Column(type: "nvarchar(max)", nullable: true), + HRAReference = table.Column(type: "nvarchar(max)", nullable: true), + ShortTitle = table.Column(type: "nvarchar(max)", nullable: true), + Acronym = table.Column(type: "nvarchar(max)", nullable: true), + LongTitle = table.Column(type: "nvarchar(max)", nullable: true), + EstimatedStartDate = table.Column(type: "datetime2", nullable: false), + EstimatedEndDate = table.Column(type: "datetime2", nullable: false), + EstimatedTotalDurationInMonths = table.Column(type: "real", nullable: false), + IsInvolvingMedicalDeviceTrial = table.Column(type: "bit", nullable: false), + IsInvolvingRadiotherapy = table.Column(type: "bit", nullable: false), + IsInvolvingRadioactiveSubstances = table.Column(type: "bit", nullable: false), + IsMultiCentre = table.Column(type: "bit", nullable: false), + NumberOfUKCentres = table.Column(type: "int", nullable: false), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ResearchStudies", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + RoleId = table.Column(type: "nvarchar(450)", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "nvarchar(450)", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + ProviderKey = table.Column(type: "nvarchar(450)", nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "nvarchar(450)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserRoles", + columns: table => new + { + UserId = table.Column(type: "nvarchar(450)", nullable: false), + RoleId = table.Column(type: "nvarchar(450)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "nvarchar(450)", nullable: false), + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Departments", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + CompanyId = table.Column(type: "uniqueidentifier", nullable: false), + DepartmentName = table.Column(type: "nvarchar(max)", nullable: true), + Acronym = table.Column(type: "nvarchar(max)", nullable: true), + IsDefault = table.Column(type: "bit", nullable: false), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Departments", x => x.Id); + table.ForeignKey( + name: "FK_Departments_Companies_CompanyId", + column: x => x.CompanyId, + principalTable: "Companies", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ImagingProcedures", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ShortCode = table.Column(type: "nvarchar(max)", nullable: true), + DisplayTerm = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "int", nullable: false), + RecommendedSubstituteProcedure = table.Column(type: "nvarchar(max)", nullable: true), + ModalityId = table.Column(type: "uniqueidentifier", nullable: false), + SNOMEDCT_ConceptID = table.Column(type: "nvarchar(max)", nullable: true), + SNOMEDCT_LateralityID = table.Column(type: "nvarchar(max)", nullable: true), + SNOMEDCT_FSN = table.Column(type: "nvarchar(max)", nullable: true), + BodyPartMultiplicationFactor = table.Column(type: "int", nullable: false), + IsInterventional = table.Column(type: "bit", nullable: false), + IsDiagnostic = table.Column(type: "bit", nullable: false), + IsDeprecated = table.Column(type: "bit", nullable: false), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ImagingProcedures", x => x.Id); + table.ForeignKey( + name: "FK_ImagingProcedures_ImagingModalities_ModalityId", + column: x => x.ModalityId, + principalTable: "ImagingModalities", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Contacts", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + JobTitle = table.Column(type: "nvarchar(max)", nullable: true), + DepartmentId = table.Column(type: "uniqueidentifier", nullable: false), + Qualification = table.Column(type: "nvarchar(max)", nullable: true), + EmailAddress = table.Column(type: "nvarchar(max)", nullable: true), + TelephoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + Created = table.Column(type: "datetime2", nullable: false), + LastModified = table.Column(type: "datetime2", nullable: true), + FirstName = table.Column(type: "nvarchar(max)", nullable: true), + MiddleName = table.Column(type: "nvarchar(max)", nullable: true), + LastName = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Contacts", x => x.Id); + table.ForeignKey( + name: "FK_Contacts_Departments_DepartmentId", + column: x => x.DepartmentId, + principalTable: "Departments", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "AspNetRoles", + column: "NormalizedName", + unique: true, + filter: "[NormalizedName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserRoles_RoleId", + table: "AspNetUserRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "AspNetUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "AspNetUsers", + column: "NormalizedUserName", + unique: true, + filter: "[NormalizedUserName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_Contacts_DepartmentId", + table: "Contacts", + column: "DepartmentId"); + + migrationBuilder.CreateIndex( + name: "IX_Departments_CompanyId", + table: "Departments", + column: "CompanyId"); + + migrationBuilder.CreateIndex( + name: "IX_ImagingModalities_ModalityCode", + table: "ImagingModalities", + column: "ModalityCode"); + + migrationBuilder.CreateIndex( + name: "IX_ImagingProcedures_ModalityId", + table: "ImagingProcedures", + column: "ModalityId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserRoles"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropTable( + name: "Contacts"); + + migrationBuilder.DropTable( + name: "ImagingProcedures"); + + migrationBuilder.DropTable( + name: "ResearchStudies"); + + migrationBuilder.DropTable( + name: "AspNetRoles"); + + migrationBuilder.DropTable( + name: "AspNetUsers"); + + migrationBuilder.DropTable( + name: "Departments"); + + migrationBuilder.DropTable( + name: "ImagingModalities"); + + migrationBuilder.DropTable( + name: "Companies"); + } + } +} diff --git a/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs b/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs new file mode 100644 index 0000000..0b73601 --- /dev/null +++ b/src/Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs @@ -0,0 +1,571 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using ORRAS.Infrastructure.Persistence; + +namespace ORRAS.Infrastructure.Persistence.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + partial class ApplicationDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.6") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Abbreviation") + .HasColumnType("nvarchar(max)"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.ToTable("Companies"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property("EmailAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .HasColumnType("nvarchar(max)"); + + b.Property("JobTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("LastName") + .HasColumnType("nvarchar(max)"); + + b.Property("MiddleName") + .HasColumnType("nvarchar(max)"); + + b.Property("Qualification") + .HasColumnType("nvarchar(max)"); + + b.Property("TelephoneNumber") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Contacts"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Acronym") + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DepartmentName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("CompanyId"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingModality", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("ModalityCode") + .HasColumnType("nvarchar(450)"); + + b.Property("ModalityName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ModalityCode"); + + b.ToTable("ImagingModalities"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingProcedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("BodyPartMultiplicationFactor") + .HasColumnType("int"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("DisplayTerm") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeprecated") + .HasColumnType("bit"); + + b.Property("IsDiagnostic") + .HasColumnType("bit"); + + b.Property("IsInterventional") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("ModalityId") + .HasColumnType("uniqueidentifier"); + + b.Property("RecommendedSubstituteProcedure") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_ConceptID") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_FSN") + .HasColumnType("nvarchar(max)"); + + b.Property("SNOMEDCT_LateralityID") + .HasColumnType("nvarchar(max)"); + + b.Property("ShortCode") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModalityId"); + + b.ToTable("ImagingProcedures"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ResearchStudy", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Acronym") + .HasColumnType("nvarchar(max)"); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("EstimatedEndDate") + .HasColumnType("datetime2"); + + b.Property("EstimatedStartDate") + .HasColumnType("datetime2"); + + b.Property("EstimatedTotalDurationInMonths") + .HasColumnType("real"); + + b.Property("EudraCTReference") + .HasColumnType("nvarchar(max)"); + + b.Property("HRAReference") + .HasColumnType("nvarchar(max)"); + + b.Property("IrasProjectID") + .HasColumnType("nvarchar(max)"); + + b.Property("IsInvolvingMedicalDeviceTrial") + .HasColumnType("bit"); + + b.Property("IsInvolvingRadioactiveSubstances") + .HasColumnType("bit"); + + b.Property("IsInvolvingRadiotherapy") + .HasColumnType("bit"); + + b.Property("IsMultiCentre") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime2"); + + b.Property("LocalPID") + .HasColumnType("nvarchar(max)"); + + b.Property("LongTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberOfUKCentres") + .HasColumnType("int"); + + b.Property("ShortTitle") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ResearchStudies"); + }); + + modelBuilder.Entity("ORRAS.Infrastructure.Identity.AppUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("JobTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("ORRAS.Infrastructure.Identity.AppUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Contact", b => + { + b.HasOne("ORRAS.Domain.Entities.Department", "Department") + .WithMany("Contacts") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.HasOne("ORRAS.Domain.Entities.Company", "Company") + .WithMany("Departments") + .HasForeignKey("CompanyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingProcedure", b => + { + b.HasOne("ORRAS.Domain.Entities.ImagingModality", "Modality") + .WithMany("ImagingProcedures") + .HasForeignKey("ModalityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Modality"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Company", b => + { + b.Navigation("Departments"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.Department", b => + { + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("ORRAS.Domain.Entities.ImagingModality", b => + { + b.Navigation("ImagingProcedures"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Infrastructure/Persistence/Seed.cs b/src/Infrastructure/Persistence/Seed.cs new file mode 100644 index 0000000..6d094a1 --- /dev/null +++ b/src/Infrastructure/Persistence/Seed.cs @@ -0,0 +1,198 @@ +using System.IO; +using System.Net; +using System; +using System.Runtime.InteropServices; +using System.Linq; +using System.Threading.Tasks; +using ORRAS.Domain.Entities; +using System.Collections.Generic; +using ORRAS.Domain.Enums; +using ORRAS.Domain.ValueObjects; +using Microsoft.AspNetCore.Identity; +using ORRAS.Infrastructure.Identity; +using System.Text.Json; +using System.Reflection; + +namespace ORRAS.Infrastructure.Persistence +{ + public class Seed + { + + public static async Task SeedDefaultUsersAsync(ApplicationDbContext context, UserManager userManager) + { + if (!userManager.Users.Any()) + { + + + string filePath = "../Infrastructure/Persistence/UserAccountSeed.json"; + + try + { + using FileStream openStream = System.IO.File.OpenRead(filePath); + List users = await JsonSerializer.DeserializeAsync>(openStream); + + foreach (var user in users) + { + await userManager.CreateAsync(user, "Pa$$w0rd"); + } + } + catch (Exception) + { + + throw; + } + + + } + } + + public static async Task SeedSampleDataAsync(ApplicationDbContext context) + { + + + //TODO: check if seed is necessary + if (!context.ImagingModalities.Any()) + { + var modalities = new List + { + new ImagingModality + { + ModalityCode = "A", + ModalityName = "Angiography", + + ImagingProcedures = + { + new ImagingProcedure { + Status = ImagingProcedureStatus.Active, + ShortCode = "FPACE", + DisplayTerm = "Cardiac pacing wire screening", + BodyPartMultiplicationFactor = 1, + IsInterventional = true, + IsDiagnostic = false, + SNOMEDCT_ConceptID = "432953000", + SNOMEDCT_FSN = "Fluoroscopy of heart for checking of cardiac pacemaker electrode position (procedure)" + }, + new ImagingProcedure { + Status = ImagingProcedureStatus.Active, + ShortCode = "FPASC", + DisplayTerm = "Cardiac permanent pacemaker check", + BodyPartMultiplicationFactor = 1, + IsInterventional = false, + IsDiagnostic = true, + SNOMEDCT_ConceptID = "431306005", + SNOMEDCT_FSN = "Fluoroscopy of heart for checking of permanent pacemaker position (procedure)" + }, + new ImagingProcedure { + Status = ImagingProcedureStatus.Active, + ShortCode = "FALLR", + DisplayTerm = "Angio lower limbs Right", + BodyPartMultiplicationFactor = 1, + IsInterventional = false, + IsDiagnostic = true, + SNOMEDCT_ConceptID = "418994005", + SNOMEDCT_LateralityID = "24028007", + SNOMEDCT_FSN = "Fluoroscopic angiography of lower limb artery (procedure)" + }, + } + }, + new ImagingModality + { + ModalityCode = "X", + ModalityName = "X-Ray", + ImagingProcedures = + { + new ImagingProcedure { + Status = ImagingProcedureStatus.Active, + ShortCode = "XPATR", + DisplayTerm = "XR Patella Rt", + BodyPartMultiplicationFactor = 1, + IsInterventional = false, + IsDiagnostic = true, + SNOMEDCT_ConceptID = "168669007", + SNOMEDCT_LateralityID = "24028007", + SNOMEDCT_FSN = "Plain X-ray of patella (procedure)" + } + } + + } + }; + context.ImagingModalities.AddRange(modalities); + } + + if (!context.Companies.Any()) + { + var companies = new List + { + new Company + { + DisplayName = "Oxford University Hospitals NHS Foundation Trust", + Abbreviation = "OUH NHS FT", + Departments = + { + new Department + { + DepartmentName = "Medical Physics and Clinical Engineering", + Acronym = "MPCE", + Contacts = + { + new Contact + { + FirstName = "James", + LastName = "Harries", + JobTitle = "Head of Business and Informatics", + EmailAddress = "james.harries@ouh.nhs.uk", + } + } + } + } + + } + }; + context.Companies.AddRange(companies); + } + + if (!context.ResearchStudies.Any()) + { + var studies = new List + { + new ResearchStudy + { + LocalPID = "15044", + IrasProjectID = "20/LO/0963", + ShortTitle = "SGNTUC-016 / HER2CLIMB-02", + LongTitle = "Randomized, double-blind, phase 3 study of tucatinib or placebo in combination with ado-trastuzumab emtansine (TDM1) for subjects with unresectable locally-advanced or metastatic HER2+ breast cancer (HER2CLIMB-02)", + EstimatedStartDate = DateTime.Parse("01/10/2020"), + EstimatedTotalDurationInMonths = 48, + IsMultiCentre = true, + NumberOfUKCentres = 8, + EudraCTReference = "2019-005017-39" + }, + new ResearchStudy + { + IrasProjectID = "1061/MODREC/20", + LongTitle = "Military COVID, Outcomes in a Viral Infectious Disease", + ShortTitle = "M-COVID Military COVID trial", + EstimatedStartDate = DateTime.Parse("03/08/2020"), + IsMultiCentre = true, + NumberOfUKCentres = 2, + EstimatedTotalDurationInMonths = 18 + }, + new ResearchStudy + { + IrasProjectID = "20/SC/0111", + LongTitle = "DREAMM 7: A Multicenter, Open-Label, Randomized Phase III Study to Evaluate the Efficacy and Safety of the Combination of Belantamab Mafodotin, Bortezomib, and Dexamethasone (B-Vd) Compared with the Combination of Daratumumab, Bortezomib and Dexamethasone (D-Vd) in Participants with Relapsed/Refractory Multiple Myeloma", + ShortTitle = "DREAMM 7: A Multicenter, Open-Label, Randomized Phase III Study", + Acronym = "DREAMM7", + EstimatedStartDate = DateTime.Parse("01/05/2020"), + IsMultiCentre = true, + NumberOfUKCentres = 6, + EstimatedTotalDurationInMonths = 74 + } + }; + context.ResearchStudies.AddRange(studies); + } + + await context.SaveChangesAsync(); + } + } +} \ No newline at end of file diff --git a/src/Infrastructure/Services/DataTimeService.cs b/src/Infrastructure/Services/DataTimeService.cs new file mode 100644 index 0000000..0c6c33f --- /dev/null +++ b/src/Infrastructure/Services/DataTimeService.cs @@ -0,0 +1,11 @@ +using System; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.Infrastructure.Services +{ + public class DateTimeService : IDateTime + { + // CHECK: would UTC time be a more appropriate convention to use? + public DateTime Now => DateTime.Now; + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/AccountController.cs b/src/WebUI/Controllers/AccountController.cs new file mode 100644 index 0000000..607d000 --- /dev/null +++ b/src/WebUI/Controllers/AccountController.cs @@ -0,0 +1,97 @@ +using System.Security.Claims; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using ORRAS.Infrastructure.Identity; +using ORRAS.WebUI.DTOs; +using ORRAS.WebUI.Services; + +namespace ORRAS.WebUI.Controllers +{ + [AllowAnonymous] + [ApiController] + [Route("api/[controller]")] + public class AccountController : ControllerBase + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly TokenService _tokenService; + public AccountController(UserManager userManager, + SignInManager signInManager, + TokenService tokenService) + { + _tokenService = tokenService; + _signInManager = signInManager; + _userManager = userManager; + + } + + [HttpPost("login")] + public async Task> Login(LoginDto loginDto) + { + var user = await _userManager.FindByEmailAsync(loginDto.Email); + + if (user == null) return Unauthorized(); + + var result = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, false); + + if (result.Succeeded) + { + return CreateUserDto(user); + } + + return Unauthorized(); + } + + [HttpPost("register")] + public async Task> Register(RegisterDto registerDto) + { + if (await _userManager.Users.AnyAsync(x => x.Email == registerDto.Email)) + { + ModelState.AddModelError("email", "Email taken"); + return ValidationProblem(); + } + + + if (await _userManager.Users.AnyAsync(x => x.UserName == registerDto.Username)) + { + ModelState.AddModelError("username", "Username taken"); + return ValidationProblem(); + } + + var user = new AppUser + { + DisplayName = registerDto.DisplayName, + Email = registerDto.Email, + UserName = registerDto.Username + }; + + var result = await _userManager.CreateAsync(user, registerDto.Password); + + if (result.Succeeded) return CreateUserDto(user); + + return BadRequest("Problems registering user"); + } + + [HttpGet] + public async Task> GetCurrentUser() + { + var user = await _userManager.FindByEmailAsync(User.FindFirstValue(ClaimTypes.Email)); + + return CreateUserDto(user); + } + + private UserDto CreateUserDto(AppUser user) + { + return new UserDto + { + DisplayName = user.DisplayName, + JobTitle = user.JobTitle, + Token = _tokenService.CreateToken(user), + Username = user.UserName + }; + } + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/ApiControllerBase.cs b/src/WebUI/Controllers/ApiControllerBase.cs new file mode 100644 index 0000000..03570ff --- /dev/null +++ b/src/WebUI/Controllers/ApiControllerBase.cs @@ -0,0 +1,14 @@ +using MediatR; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; + +namespace ORRAS.WebUI.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public abstract class ApiControllerBase : ControllerBase + { + private ISender _mediator; + protected ISender Mediator => _mediator ??= HttpContext.RequestServices.GetService(); + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/BuggyController.cs b/src/WebUI/Controllers/BuggyController.cs new file mode 100644 index 0000000..1d7ea9a --- /dev/null +++ b/src/WebUI/Controllers/BuggyController.cs @@ -0,0 +1,33 @@ +using System; +using Microsoft.AspNetCore.Mvc; +using ORRAS.Application.Common.Exceptions; + +namespace ORRAS.WebUI.Controllers +{ + public class BuggyController : ApiControllerBase + { + [HttpGet("not-found")] + public ActionResult GetNotFound() + { + throw new NotFoundException("The resource was not found"); + } + + [HttpGet("bad-request")] + public ActionResult GetBadRequest() + { + return BadRequest("This is a bad request"); + } + + [HttpGet("server-error")] + public ActionResult GetServerError() + { + throw new Exception("This is a server error"); + } + + [HttpGet("unauthorised")] + public ActionResult GetUnauthorised() + { + return Unauthorized(); + } + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/CompaniesController.cs b/src/WebUI/Controllers/CompaniesController.cs new file mode 100644 index 0000000..dab61a6 --- /dev/null +++ b/src/WebUI/Controllers/CompaniesController.cs @@ -0,0 +1,52 @@ +using System.Threading; +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; +using ORRAS.Domain.Entities; +using ORRAS.Infrastructure.Persistence; +using ORRAS.Application.Features.Companies.Queries; +using ORRAS.Application.Features.Companies.Commands; +using MediatR; +using Microsoft.AspNetCore.Authorization; + +namespace ORRAS.WebUI.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class CompaniesController : ApiControllerBase + { + + [HttpGet("{id}")] + public async Task> Details(Guid id) + { + return await Mediator.Send(new Details.Query { Id = id }); + } + + [Authorize] + [HttpGet] + public async Task> List(CancellationToken ct) + { + return await Mediator.Send(new ListCompanies.Query(), ct); + } + + // TODO: add Create, Update and Delete endpoints for companies + [HttpPost] + public async Task> CreateCompany(NewCompanyDto company, CancellationToken ct) + { + return await Mediator.Send(new CreateCompany.Command{Company = company}, ct); + } + [HttpPut("{id}")] + public ActionResult EditCompany() + { + return NoContent(); + } + + [HttpDelete("{id}")] + + public ActionResult DeleteCompany() + { + return NoContent(); + } + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/ImagingModalitiesController.cs b/src/WebUI/Controllers/ImagingModalitiesController.cs new file mode 100644 index 0000000..3fee2b9 --- /dev/null +++ b/src/WebUI/Controllers/ImagingModalitiesController.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using ORRAS.Application.Features.ImagingModalities; +using ORRAS.Domain.Entities; + +namespace ORRAS.WebUI.Controllers +{ + public class ImagingModalitiesController : ApiControllerBase + { + [HttpGet] + public async Task>> List(CancellationToken ct) + { + return await Mediator.Send(new List.Query(), ct); + } + + [HttpGet("{id}")] + public async Task> Details(Guid id) + { + return await Mediator.Send(new Details.Query { Id = id }); + } + + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/ImagingProceduresController.cs b/src/WebUI/Controllers/ImagingProceduresController.cs new file mode 100644 index 0000000..4a9d06e --- /dev/null +++ b/src/WebUI/Controllers/ImagingProceduresController.cs @@ -0,0 +1,25 @@ +using System.Threading; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using ORRAS.Domain.Entities; +using ORRAS.Application.Features.ImagingProcedures; + +namespace ORRAS.WebUI.Controllers +{ + public class ImagingProceduresController : ApiControllerBase + { + [HttpGet] + public async Task>> List(CancellationToken ct) + { + return await Mediator.Send(new List.Query(), ct); + } + + [HttpGet("{id}")] + public async Task> Details(Guid id) + { + return await Mediator.Send(new Details.Query { Id = id }); + } + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/StudiesController.cs b/src/WebUI/Controllers/StudiesController.cs new file mode 100644 index 0000000..3b953fb --- /dev/null +++ b/src/WebUI/Controllers/StudiesController.cs @@ -0,0 +1,24 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using ORRAS.Application.Features.ResearchStudies.Queries; + +namespace ORRAS.WebUI.Controllers +{ + public class StudiesController : ApiControllerBase + { + [HttpGet] + public async Task> GetStudies(CancellationToken ct) + { + return await Mediator.Send(new ListStudies.Query(), ct); + } + + [HttpGet("{id}")] + public async Task> GetStudy(Guid id, CancellationToken ct) + { + + return await Mediator.Send(new GetStudy.Query { Id = id }, ct); + } + } +} \ No newline at end of file diff --git a/src/WebUI/Controllers/WeatherForecastController.cs b/src/WebUI/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..686dc30 --- /dev/null +++ b/src/WebUI/Controllers/WeatherForecastController.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; +using ORRAS.Application.Features.WeatherForecasts.Queries; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace ORRAS.WebUI.Controllers +{ + public class WeatherForecastController : ApiControllerBase + { + [HttpGet] + public async Task> Get() + { + return await Mediator.Send(new GetWeatherForecastsQuery()); + } + } +} diff --git a/src/WebUI/DTOs/LoginDto.cs b/src/WebUI/DTOs/LoginDto.cs new file mode 100644 index 0000000..2ab52f2 --- /dev/null +++ b/src/WebUI/DTOs/LoginDto.cs @@ -0,0 +1,8 @@ +namespace ORRAS.WebUI.DTOs +{ + public class LoginDto + { + public string Email { get; set; } + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/src/WebUI/DTOs/RegisterDto.cs b/src/WebUI/DTOs/RegisterDto.cs new file mode 100644 index 0000000..fc8c7cd --- /dev/null +++ b/src/WebUI/DTOs/RegisterDto.cs @@ -0,0 +1,11 @@ +namespace ORRAS.WebUI.DTOs +{ + public class RegisterDto + { + public string DisplayName { get; set; } + public string JobTitle { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public string Username { get; set; } + } +} \ No newline at end of file diff --git a/src/WebUI/DTOs/UserDto.cs b/src/WebUI/DTOs/UserDto.cs new file mode 100644 index 0000000..a119a84 --- /dev/null +++ b/src/WebUI/DTOs/UserDto.cs @@ -0,0 +1,10 @@ +namespace ORRAS.WebUI.DTOs +{ + public class UserDto + { + public string DisplayName { get; set; } + public string JobTitle { get; set; } + public string Token { get; set; } + public string Username { get; set; } + } +} \ No newline at end of file diff --git a/src/WebUI/Dockerfile b/src/WebUI/Dockerfile new file mode 100644 index 0000000..b2fff69 --- /dev/null +++ b/src/WebUI/Dockerfile @@ -0,0 +1,28 @@ +# Get base SDK Image from microsoft +FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build-env + +# install node js for react +RUN curl --silent --location https://deb.nodesource.com/setup_10.x | bash - +RUN apt-get install --yes nodejs + +WORKDIR /app + +# COPY app source files +COPY src/ ./ + +# publish and release app to out dir +RUN dotnet publish WebUI -c Release -o out + +# pull down the aspnet runtime and rebase the container +FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 + +# expose IP port of container +EXPOSE 80 + +WORKDIR /app + +# copy released binaries to container +COPY --from=build-env /app/out . + +# set entry point to run when container is run +ENTRYPOINT [ "dotnet", "ORRA.WebUI.dll" ] \ No newline at end of file diff --git a/src/WebUI/Filters/ApiExceptionFilterAttribute.cs b/src/WebUI/Filters/ApiExceptionFilterAttribute.cs new file mode 100644 index 0000000..6f7db95 --- /dev/null +++ b/src/WebUI/Filters/ApiExceptionFilterAttribute.cs @@ -0,0 +1,137 @@ +using System.Collections.Generic; +using System; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Http; +using ORRAS.Application.Common.Exceptions; + +namespace ORRAS.WebUI.Filters +{ + public class ApiExceptionFilterAttribute : ExceptionFilterAttribute + { + private readonly Dictionary> _exceptionHandlers; + + public ApiExceptionFilterAttribute() + { + // Register each custom exception type and its handler within a Dictionary + _exceptionHandlers = new Dictionary> + { + {typeof(ValidationException), HandleValidationException}, + {typeof(NotFoundException), HandleNotFoundException}, + {typeof(ForbiddenAccessException), HandleForbiddenAccessException} + }; + + + } + + public override void OnException(ExceptionContext context) + { + HandleException(context); + + base.OnException(context); + } + + private void HandleException(ExceptionContext context) + { + Type type = context.Exception.GetType(); + + // if there is a corresponding handler registered for the type + // of exception thrown then invoke its method + + if (_exceptionHandlers.ContainsKey(type)) + { + _exceptionHandlers[type].Invoke(context); + return; + } + + // if model state is not valid then invoke the dedicated method + + if (!context.ModelState.IsValid) + { + HandleInvalidModelStateException(context); + return; + } + + HandleUnknownException(context); + } + + private void HandleValidationException(ExceptionContext context) + { + var exception = context.Exception as ValidationException; + + var exceptionDetails = new ValidationProblemDetails(exception.Errors) + { + Type = "https://httpstatuses.com/400" + }; + + context.Result = new BadRequestObjectResult(exceptionDetails); + + context.ExceptionHandled = true; + } + private void HandleInvalidModelStateException(ExceptionContext context) + { + var exceptionDetails = new ValidationProblemDetails(context.ModelState) + { + Type = "https://httpstatuses.com/400" + }; + + context.Result = new BadRequestObjectResult(exceptionDetails); + + context.ExceptionHandled = true; + } + + public void HandleNotFoundException(ExceptionContext context) + { + var exception = context.Exception as NotFoundException; + var exceptionDetails = new ProblemDetails() + { + Type = "https://httpstatuses.com/404", + Title = "The specified resource was not found", + Detail = exception.Message + }; + + context.Result = new NotFoundObjectResult(exceptionDetails); + + context.ExceptionHandled = true; + } + + // TODO: Implement a HandleUnauthorizedAccessException Method and corresponding Exception class + + public void HandleForbiddenAccessException(ExceptionContext context) + { + var exception = context.Exception as ForbiddenAccessException; + + var exceptionDetails = new ProblemDetails() + { + Status = StatusCodes.Status403Forbidden, + Title = "Forbidden", + Type = "https://httpstatuses.com/403" + }; + + context.Result = new ObjectResult(exceptionDetails) + { + StatusCode = StatusCodes.Status403Forbidden + }; + + context.ExceptionHandled = true; + + } + private void HandleUnknownException(ExceptionContext context) + { + var exceptionDetails = new ProblemDetails + { + Status = StatusCodes.Status500InternalServerError, + Title = "An error occurred while processing your request", + Type = "https://httpstatuses.com/500" + }; + + context.Result = new ObjectResult(exceptionDetails) + { + StatusCode = StatusCodes.Status500InternalServerError + }; + + context.ExceptionHandled = true; + } + + } +} \ No newline at end of file diff --git a/src/WebUI/Pages/Error.cshtml b/src/WebUI/Pages/Error.cshtml new file mode 100644 index 0000000..09da0d2 --- /dev/null +++ b/src/WebUI/Pages/Error.cshtml @@ -0,0 +1,26 @@ +@page +@model ErrorModel +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

diff --git a/src/WebUI/Pages/Error.cshtml.cs b/src/WebUI/Pages/Error.cshtml.cs new file mode 100644 index 0000000..7c75f68 --- /dev/null +++ b/src/WebUI/Pages/Error.cshtml.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Logging; + +namespace ORRAS.WebUI.Pages +{ + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public class ErrorModel : PageModel + { + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } + } +} diff --git a/src/WebUI/Pages/_ViewImports.cshtml b/src/WebUI/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..455d8ce --- /dev/null +++ b/src/WebUI/Pages/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using ORRAS.WebUI +@namespace ORRAS.WebUI.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/WebUI/Program.cs b/src/WebUI/Program.cs new file mode 100644 index 0000000..29e03c0 --- /dev/null +++ b/src/WebUI/Program.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using ORRAS.Infrastructure.Identity; +using ORRAS.Infrastructure.Persistence; + +namespace ORRAS.WebUI +{ + public class Program + { + public async static Task Main(string[] args) + { + var host = CreateHostBuilder(args).Build(); + + using (var scope = host.Services.CreateScope()) + { + var services = scope.ServiceProvider; + + try + { + var context = services.GetRequiredService(); + var userManager = services.GetRequiredService>(); + + // if we are not using the in-memory database, then we must be using an SQL provider, + // so migrations are assumed to be supported + if (!context.Database.IsInMemory()) + { + await context.Database.MigrateAsync(); + } + // run the seed data method + await Seed.SeedDefaultUsersAsync(context, userManager); + await Seed.SeedSampleDataAsync(context); + } + catch (Exception ex) + { + var logger = services.GetRequiredService>(); + + logger.LogError(ex, "An error occurred while migrating or seeding the database"); + + throw; + } + } + await host.RunAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } +} \ No newline at end of file diff --git a/src/WebUI/Properties/launchSettings.json b/src/WebUI/Properties/launchSettings.json new file mode 100644 index 0000000..a4f4947 --- /dev/null +++ b/src/WebUI/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:24160", + "sslPort": 44347 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "WebUI": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/WebUI/Services/CurrentUserService.cs b/src/WebUI/Services/CurrentUserService.cs new file mode 100644 index 0000000..7b93a9f --- /dev/null +++ b/src/WebUI/Services/CurrentUserService.cs @@ -0,0 +1,18 @@ +using System.Security.Claims; +using Microsoft.AspNetCore.Http; +using ORRAS.Application.Common.Interfaces; + +namespace ORRAS.WebUI.Services +{ + public class CurrentUserService : ICurrentUserService + { + private readonly IHttpContextAccessor _httpContextAccessor; + + public CurrentUserService(IHttpContextAccessor httpContextAccessor) + { + _httpContextAccessor = httpContextAccessor; + } + + public string UserId => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier); + } +} \ No newline at end of file diff --git a/src/WebUI/Services/TokenService.cs b/src/WebUI/Services/TokenService.cs new file mode 100644 index 0000000..7c642ad --- /dev/null +++ b/src/WebUI/Services/TokenService.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; +using Microsoft.Extensions.Configuration; +using Microsoft.IdentityModel.Tokens; +using ORRAS.Infrastructure.Identity; + +namespace ORRAS.WebUI.Services +{ + public class TokenService + { + private readonly IConfiguration _config; + public TokenService(IConfiguration config) + { + _config = config; + } + + public string CreateToken(AppUser user) + { + var claims = new List + { + new Claim(ClaimTypes.Name, user.UserName), + new Claim(ClaimTypes.NameIdentifier, user.Id), + new Claim(ClaimTypes.Email, user.Email) + }; + + // TODO: Remove SecretKey and store in a safe place + var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["TokenKey"])); + var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); + + var tokenDescriptor = new SecurityTokenDescriptor + { + Subject = new ClaimsIdentity(claims), + Expires = DateTime.Now.AddDays(7), + SigningCredentials = creds + }; + + var tokenHandler = new JwtSecurityTokenHandler(); + + var token = tokenHandler.CreateToken(tokenDescriptor); + + return tokenHandler.WriteToken(token); + } + } +} \ No newline at end of file diff --git a/src/WebUI/Startup.cs b/src/WebUI/Startup.cs new file mode 100644 index 0000000..dd3d73f --- /dev/null +++ b/src/WebUI/Startup.cs @@ -0,0 +1,160 @@ +using System; +using System.Text; +using FluentValidation.AspNetCore; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpsPolicy; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc.Authorization; +using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; +using ORRAS.Application.Extensions; +using ORRAS.Infrastructure.Identity; +using ORRAS.Infrastructure.Persistence; +using ORRAS.Infrastructure.Persistence.Extensions; +using ORRAS.WebUI.Filters; +using ORRAS.WebUI.Services; + +namespace ORRAS.WebUI +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + + // inject application services into dependency injection + services.AddApplicationServices(); + // inject infrastructure services into dependency injection + services.AddInfrastructureServices(Configuration); + + services.AddHttpContextAccessor(); + + services.AddHealthChecks() + .AddDbContextCheck(); + + // setup identity services + services.AddIdentityCore(opt => + { + opt.Password.RequireNonAlphanumeric = false; + }) + .AddEntityFrameworkStores() + .AddSignInManager>(); + + services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuerSigningKey = true, + IssuerSigningKey = GenerateKey(Configuration["TokenKey"]), + ValidateIssuer = false, + ValidateAudience = false + }; + }); + + services.AddScoped(); + + + // CORS service for dev enviro + services.AddCors(options => + { + options.AddDefaultPolicy( + builder => + { + builder.WithOrigins("http://localhost:3000") + .AllowAnyHeader().AllowAnyMethod(); + } + ); + }); + + // configure exception handling + services.AddControllersWithViews(options => + { + var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build(); + + options.Filters.Add(); + // quick authorize filter TODO: change to use ApiException and global authorization behavior + options.Filters.Add(new AuthorizeFilter(policy)); + }) + + .AddFluentValidation(); + + + services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "ORRAS.WebUI", Version = "v1", }); + }); + + // In production, the React files will be served from this directory + services.AddSpaStaticFiles(configuration => + { + configuration.RootPath = "client-app/build"; + }); + + + } + + private static SecurityKey GenerateKey(string key) + { + return new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseSwagger(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ORRAS.WebUI v1")); + } + else + { + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + } + + app.UseHealthChecks("/health"); + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseSpaStaticFiles(); + + app.UseRouting(); + + app.UseCors(); + + app.UseAuthentication(); + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + + app.UseSpa(spa => + { + spa.Options.SourcePath = "client-app"; + + if (env.IsDevelopment()) + { + spa.UseProxyToSpaDevelopmentServer("http://localhost:3000"); + } + }); + } + } +} diff --git a/src/WebUI/WebUI.csproj b/src/WebUI/WebUI.csproj new file mode 100644 index 0000000..25e68c7 --- /dev/null +++ b/src/WebUI/WebUI.csproj @@ -0,0 +1,68 @@ + + + + net5.0 + ORRAS.WebUI + ORRAS.WebUI + true + Latest + false + client-app\ + $(DefaultItemExcludes);$(SpaRoot)node_modules\** + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(DistFiles.Identity) + PreserveNewest + true + + + + + \ No newline at end of file diff --git a/src/WebUI/appsettings.json b/src/WebUI/appsettings.json new file mode 100644 index 0000000..14a1a9e --- /dev/null +++ b/src/WebUI/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, +"AllowedHosts": "*" +} diff --git a/src/WebUI/client-app/.env.development b/src/WebUI/client-app/.env.development new file mode 100644 index 0000000..29a297f --- /dev/null +++ b/src/WebUI/client-app/.env.development @@ -0,0 +1 @@ +REACT_APP_API_URL=http://localhost:5000/api \ No newline at end of file diff --git a/src/WebUI/client-app/.env.production b/src/WebUI/client-app/.env.production new file mode 100644 index 0000000..a0f7916 --- /dev/null +++ b/src/WebUI/client-app/.env.production @@ -0,0 +1 @@ +REACT_APP_API_URL=/api diff --git a/src/WebUI/client-app/.gitignore b/src/WebUI/client-app/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/src/WebUI/client-app/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/src/WebUI/client-app/README.md b/src/WebUI/client-app/README.md new file mode 100644 index 0000000..b87cb00 --- /dev/null +++ b/src/WebUI/client-app/README.md @@ -0,0 +1,46 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/src/WebUI/client-app/package-lock.json b/src/WebUI/client-app/package-lock.json new file mode 100644 index 0000000..c8ad19d --- /dev/null +++ b/src/WebUI/client-app/package-lock.json @@ -0,0 +1,17289 @@ +{ + "name": "client-app", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "requires": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@ant-design/icons": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz", + "integrity": "sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-svg": "^4.0.0", + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-util": "^5.9.4" + } + }, + "@ant-design/icons-svg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz", + "integrity": "sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==" + }, + "@ant-design/react-slick": { + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.3.tgz", + "integrity": "sha512-u3onF2VevGRbkGbgpldVX/nzd7LFtLeZJE0x2xIFT2qYHKkJZ6QT/jQ7KqYK4UpeTndoyrbMqLN4DiJza4BVBg==", + "requires": { + "@babel/runtime": "^7.10.4", + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "lodash": "^4.17.21", + "resize-observer-polyfill": "^1.5.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } + } + }, + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz", + "integrity": "sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg==" + }, + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.12.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.15.tgz", + "integrity": "sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==", + "requires": { + "@babel/types": "^7.12.13", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.16.tgz", + "integrity": "sha512-dBHNEEaZx7F3KoUYqagIhRIeqyyuI65xMndMZ3WwGwEBI609I4TleYQHcrS627vbKyNTXqShoN+fvYD9HuQxAg==", + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-validator-option": "^7.12.16", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.16.tgz", + "integrity": "sha512-KbSEj8l9zYkMVHpQqM3wJNxS1d9h3U9vm/uE5tpjMbaj3lTp+0noe3KPsV5dSD9jxKnf9jO9Ip9FX5PKNZCKow==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.12.16", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.16.tgz", + "integrity": "sha512-jAcQ1biDYZBdaAxB4yg46/XirgX7jBDiMHDbwYQOgtViLBXGxJpZQ24jutmBqAIB/q+AwB6j+NbBXjKxEY8vqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz", + "integrity": "sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz", + "integrity": "sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz", + "integrity": "sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz", + "integrity": "sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz", + "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz", + "integrity": "sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", + "integrity": "sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + }, + "@babel/helper-validator-option": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.16.tgz", + "integrity": "sha512-uCgsDBPUQDvzr11ePPo4TVEocxj8RXjUVSC/Y8N1YpVAI/XDdUwGJu78xmlGhTxj2ntaWM7n9LQdRtyhOzT2YQ==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz", + "integrity": "sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helpers": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz", + "integrity": "sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ==", + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", + "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz", + "integrity": "sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz", + "integrity": "sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", + "integrity": "sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.12.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.16.tgz", + "integrity": "sha512-yiDkYFapVxNOCcBfLnsb/qdsliroM+vc3LHiZwS4gh7pFjo5Xq3BDhYBNn3H3ao+hWPvqeeTdU+s+FIvokov+w==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz", + "integrity": "sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz", + "integrity": "sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz", + "integrity": "sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz", + "integrity": "sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.13" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz", + "integrity": "sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.16.tgz", + "integrity": "sha512-O3ohPwOhkwji5Mckb7F/PJpJVJY3DpPsrt/F0Bk40+QMk9QpAIqeGusHWqu/mYqsM8oBa6TziL/2mbERWsUZjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz", + "integrity": "sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", + "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", + "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", + "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz", + "integrity": "sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz", + "integrity": "sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz", + "integrity": "sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz", + "integrity": "sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz", + "integrity": "sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz", + "integrity": "sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz", + "integrity": "sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz", + "integrity": "sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA==", + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz", + "integrity": "sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ==", + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz", + "integrity": "sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==", + "requires": { + "@babel/helper-hoist-variables": "^7.12.13", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz", + "integrity": "sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w==", + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz", + "integrity": "sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz", + "integrity": "sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", + "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.16.tgz", + "integrity": "sha512-dNu0vAbIk8OkqJfGtYF6ADk6jagoyAl+Ks5aoltbAlfoKv8d6yooi3j+kObeSQaCj9PgN6KMZPB90wWyek5TmQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.16.tgz", + "integrity": "sha512-GOp5SkMC4zhHwLbOSYhF+WpIZSf5bGzaKQTT9jWkemJRDM/CE6FtPydXjEYO3pHcna2Zjvg4mQ1lfjOR/4jsaQ==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.12.16" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", + "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz", + "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz", + "integrity": "sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz", + "integrity": "sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.16.tgz", + "integrity": "sha512-88hep+B6dtDOiEqtRzwHp2TYO+CN8nbAV3eh5OpBGPsedug9J6y1JwLKzXRIGGQZDC8NlpxpQMIIxcfIW96Wgw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.16", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-typescript": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.12.16", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.16.tgz", + "integrity": "sha512-BXCAXy8RE/TzX416pD2hsVdkWo0G+tYd16pwnRV4Sc0fRwTLRS/Ssv8G5RLXUGQv7g4FG7TXkdDJxCjQ5I+Zjg==", + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-option": "^7.12.16", + "@babel/plugin-proposal-async-generator-functions": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-dynamic-import": "^7.12.16", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.12.13", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.13", + "@babel/plugin-proposal-optional-chaining": "^7.12.16", + "@babel/plugin-proposal-private-methods": "^7.12.13", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.12.13", + "@babel/plugin-transform-async-to-generator": "^7.12.13", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.12.13", + "@babel/plugin-transform-computed-properties": "^7.12.13", + "@babel/plugin-transform-destructuring": "^7.12.13", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.12.13", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.12.13", + "@babel/plugin-transform-modules-commonjs": "^7.12.13", + "@babel/plugin-transform-modules-systemjs": "^7.12.13", + "@babel/plugin-transform-modules-umd": "^7.12.13", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.12.13", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.12.13", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.12.13", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.13", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", + "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-transform-react-display-name": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.13", + "@babel/plugin-transform-react-jsx-development": "^7.12.12", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + } + }, + "@babel/preset-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz", + "integrity": "sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz", + "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz", + "integrity": "sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ==", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", + "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", + "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" + }, + "@ctrl/tinycolor": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", + "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" + }, + "@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + } + } + }, + "@fluentui/react-component-event-listener": { + "version": "0.51.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.51.7.tgz", + "integrity": "sha512-NjVm+crN0T9A7vITL8alZeHnuV8zi2gos0nezU/2YOxaUAB9E4zKiPxt/6k5U50rJs/gj8Nu45iXxnjO41HbZg==", + "requires": { + "@babel/runtime": "^7.10.4" + } + }, + "@fluentui/react-component-ref": { + "version": "0.51.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.51.7.tgz", + "integrity": "sha512-CX27jVJYaFoBCWpuWAizQZ2se137ku1dmDyn8sw+ySNJa+kkQf7LnMydiPW5K7cRdUSqUJW3eS4EjKRvVAx8xA==", + "requires": { + "@babel/runtime": "^7.10.4", + "react-is": "^16.6.3" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", + "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", + "requires": { + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "@popperjs/core": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz", + "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==" + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/plugin-replace": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz", + "integrity": "sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + } + } + }, + "@semantic-ui-react/event-stack": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz", + "integrity": "sha512-Yd0Qf7lPCIjzJ9bZYfurlNu2RDXT6KKSyubHfYK3WjRauhxCsq6Fk2LMRI9DEvShoEU+AsLSv3NGkqXAcVp0zg==", + "requires": { + "exenv": "^1.2.2", + "prop-types": "^15.6.2" + } + }, + "@sinonjs/commons": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "requires": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@testing-library/dom": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.4.tgz", + "integrity": "sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.4", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz", + "integrity": "sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ==", + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^4.2.2", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "lodash": "^4.17.15", + "redent": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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==", + "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==" + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.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==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/react": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.5.tgz", + "integrity": "sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + } + }, + "@testing-library/user-event": { + "version": "12.7.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.7.1.tgz", + "integrity": "sha512-COfCkYgcxc+P9+pEAIGlmBuIDjO91Chf9GOBHI8AhIiMyaoOrKVPQny1uf0HIAYNoHKL5slhkqOPP2ZyNaVQGw==", + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" + }, + "@types/aria-query": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz", + "integrity": "sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==" + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/eslint": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", + "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==" + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "requires": { + "@types/node": "*" + } + }, + "@types/history": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", + "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==", + "dev": true + }, + "@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@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==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.20", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz", + "integrity": "sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==", + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "12.20.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.0.tgz", + "integrity": "sha512-0/41wHcurotvSOTHQUFkgL702c3pyWR1mToSrrX3pGPvGfpHTv3Ksx0M4UVuU5VJfjVb62Eyr1eKO1tWNUCg2Q==" + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "@types/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", + "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", + "requires": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.1.tgz", + "integrity": "sha512-yIVyopxQb8IDZ7SOHeTovurFq+fXiPICa+GV3gp0Xedsl+MwQlMLKmvrnEjFbQxjliH5YVAEWFh975eVNmKj7Q==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.13.tgz", + "integrity": "sha512-ZIuaO9Yrln54X6elg8q2Ivp6iK6p4syPsefEYAhRDAoqNh48C8VYUmB9RkXjKSQAJSJV0mbIFCX7I4vZDcHrjg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.7.tgz", + "integrity": "sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" + }, + "@types/testing-library__jest-dom": { + "version": "5.9.5", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", + "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", + "requires": { + "@types/jest": "*" + } + }, + "@types/uglify-js": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.12.0.tgz", + "integrity": "sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q==", + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", + "dev": true + }, + "@types/webpack": { + "version": "4.41.26", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", + "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.0.tgz", + "integrity": "sha512-DJgdGZW+8CFUTz5C/dnn4ONcUm2h2T0itWD85Ob5/V27Ndie8hUoX5HKyGssvR8sUMkAIlUc/AMK67Lqa3kBIQ==", + "requires": { + "@typescript-eslint/experimental-utils": "4.15.0", + "@typescript-eslint/scope-manager": "4.15.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.0.tgz", + "integrity": "sha512-V4vaDWvxA2zgesg4KPgEGiomWEBpJXvY4ZX34Y3qxK8LUm5I87L+qGIOTd9tHZOARXNRt9pLbblSKiYBlGMawg==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.15.0", + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/typescript-estree": "4.15.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.0.tgz", + "integrity": "sha512-L6Dtbq8Bc7g2aZwnIBETpmUa9XDKCMzKVwAArnGp5Mn7PRNFjf3mUzq8UeBjL3K8t311hvevnyqXAMSmxO8Gpg==", + "requires": { + "@typescript-eslint/scope-manager": "4.15.0", + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/typescript-estree": "4.15.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.0.tgz", + "integrity": "sha512-CSNBZnCC2jEA/a+pR9Ljh8Y+5TY5qgbPz7ICEk9WCpSEgT6Pi7H2RIjxfrrbUXvotd6ta+i27sssKEH8Azm75g==", + "requires": { + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/visitor-keys": "4.15.0" + } + }, + "@typescript-eslint/types": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.0.tgz", + "integrity": "sha512-su4RHkJhS+iFwyqyXHcS8EGPlUVoC+XREfy5daivjLur9JP8GhvTmDipuRpcujtGC4M+GYhUOJCPDE3rC5NJrg==" + }, + "@typescript-eslint/typescript-estree": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.0.tgz", + "integrity": "sha512-jG6xTmcNbi6xzZq0SdWh7wQ9cMb2pqXaUp6bUZOMsIlu5aOlxGxgE/t6L/gPybybQGvdguajXGkZKSndZJpksA==", + "requires": { + "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/visitor-keys": "4.15.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.0.tgz", + "integrity": "sha512-RnDtJwOwFucWFAMjG3ghCG/ikImFJFEg20DI7mn4pHEx3vC48lIAoyjhffvfHmErRDboUPC7p9Z2il4CLb7qxA==", + "requires": { + "@typescript-eslint/types": "4.15.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" + }, + "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==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "antd": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.15.4.tgz", + "integrity": "sha512-1c0ykHGomcd7QhEeRtynxN3i7fb7JBdnEq2/Yqhf7yzMIhGSfZm+h+A2lTqMOMheCVL6q2ie7lxqhtNLq6sWoQ==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons": "^4.6.2", + "@ant-design/react-slick": "~0.28.1", + "@babel/runtime": "^7.12.5", + "array-tree-filter": "^2.1.0", + "classnames": "^2.2.6", + "copy-to-clipboard": "^3.2.0", + "lodash": "^4.17.21", + "moment": "^2.25.3", + "rc-cascader": "~1.4.0", + "rc-checkbox": "~2.3.0", + "rc-collapse": "~3.1.0", + "rc-dialog": "~8.5.1", + "rc-drawer": "~4.3.0", + "rc-dropdown": "~3.2.0", + "rc-field-form": "~1.20.0", + "rc-image": "~5.2.4", + "rc-input-number": "~7.1.0", + "rc-mentions": "~1.5.0", + "rc-menu": "~8.10.0", + "rc-motion": "^2.4.0", + "rc-notification": "~4.5.2", + "rc-pagination": "~3.1.6", + "rc-picker": "~2.5.10", + "rc-progress": "~3.1.0", + "rc-rate": "~2.9.0", + "rc-resize-observer": "^1.0.0", + "rc-select": "~12.1.6", + "rc-slider": "~9.7.1", + "rc-steps": "~4.1.0", + "rc-switch": "~3.2.0", + "rc-table": "~7.13.0", + "rc-tabs": "~11.7.0", + "rc-textarea": "~0.3.0", + "rc-tooltip": "~5.1.0", + "rc-tree": "~4.1.0", + "rc-tree-select": "~4.3.0", + "rc-trigger": "^5.2.1", + "rc-upload": "~4.2.0-alpha.0", + "rc-util": "^5.9.4", + "scroll-into-view-if-needed": "^2.2.25", + "warning": "^4.0.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "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==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + } + }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "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==" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async-validator": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz", + "integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axe-core": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz", + "integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", + "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-preset-react-app": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz", + "integrity": "sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg==", + "requires": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-decorators": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-numeric-separator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@babel/preset-typescript": "7.12.1", + "@babel/runtime": "7.12.1", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + } + }, + "@babel/preset-react": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", + "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.1", + "@babel/plugin-transform-react-jsx-development": "^7.12.1", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "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==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", + "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "requires": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "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==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "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==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "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" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001187", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001187.tgz", + "integrity": "sha512-w7/EP1JRZ9552CyrThUnay2RkZ1DXxKe/Q2swTC4+LElLh9RRYrL1Z+27LlakB8kzY0fSmHw9mc7XYDUKAKWMA==" + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + }, + "check-types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", + "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==" + }, + "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==", + "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": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "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==", + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "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==" + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + }, + "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==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==" + }, + "core-js-compat": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz", + "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==", + "requires": { + "browserslist": "^4.16.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.3.tgz", + "integrity": "sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.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==" + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", + "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", + "requires": { + "camelcase": "^6.0.0", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^2.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.3", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.1", + "semver": "^7.3.2" + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "csstype": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz", + "integrity": "sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "date-fns": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.1.tgz", + "integrity": "sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA==" + }, + "dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "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==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz", + "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==" + }, + "dom-align": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.1.tgz", + "integrity": "sha512-CdTD9EdA5WviP8oO3n+okOm0Xt7dSuWxRTLcJiW0memwUr3Tvz66JDDCh9cb50IZFHXvBmLoyX454uJU/EVg+g==" + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + } + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "electron-to-chromium": { + "version": "1.3.664", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.664.tgz", + "integrity": "sha512-yb8LrTQXQnh9yhnaIHLk6CYugF/An50T20+X0h++hjjhVfgSp1DGoMSYycF8/aD5eiqS4QwaNhiduFvK8rifRg==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==" + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.3.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==", + "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==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-react-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", + "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", + "requires": { + "confusing-browser-globals": "^1.0.10" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.0.tgz", + "integrity": "sha512-z7ULdTxuhlRJcEe1MVljePXricuPOrsWfScRXFhNzVD5dmTHWjIF57AxD0e7AbEoLSbjSsaA5S+hCg43WvpXJQ==", + "requires": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jest": { + "version": "24.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz", + "integrity": "sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg==", + "requires": { + "@typescript-eslint/experimental-utils": "^4.0.1" + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "requires": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.1.tgz", + "integrity": "sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg==" + } + } + }, + "eslint-plugin-react": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", + "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.18.1", + "string.prototype.matchall": "^4.0.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==" + }, + "eslint-plugin-testing-library": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz", + "integrity": "sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ==", + "requires": { + "@typescript-eslint/experimental-utils": "^3.10.1" + }, + "dependencies": { + "@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==" + }, + "@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "requires": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "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==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==" + }, + "eslint-webpack-plugin": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.1.tgz", + "integrity": "sha512-LB6baXTm62IwSu5gxj4xQ8URsMc1Wk95WLcK8pFklLvk4i66lS5v5knpVzCLG9u7NXYThfIMdvr/lYe2A3ZbWw==", + "requires": { + "@types/eslint": "^7.2.6", + "arrify": "^2.0.1", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "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==", + "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": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.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==", + "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==", + "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==" + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.2.0.tgz", + "integrity": "sha512-M/u37b4oSGlusaU8ZB96BfFPWQ8MbsZYXB+kXGMiDj6IKinkcNaQvmirBuWj8mAXqP6LYn1rQvbTYum3yPhaOA==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "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==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "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==" + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "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==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastq": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", + "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", + "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "filesize": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.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==", + "requires": { + "locate-path": "^5.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==", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==" + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", + "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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==", + "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" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formik": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.6.tgz", + "integrity": "sha512-Kxk2zQRafy56zhLmrzcbryUpMBvT0tal5IvcifK5+4YNGelKsnrODFJ0sZQRMQboblWNym4lAW3bt+tf2vApSA==", + "requires": { + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.14", + "lodash-es": "^4.17.14", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^1.10.0" + }, + "dependencies": { + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + } + } + }, + "formik-antd": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formik-antd/-/formik-antd-2.0.1.tgz", + "integrity": "sha512-KyDRqzPUchYvKLLku5/yphzIDkAFDT8ViKo6+9wXYJf0duwcuCmsNZlgQiEdlCrm1IWN3XMLUCPV/MUm0iLKww==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "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==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "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.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "optional": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "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": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "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": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "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==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-webpack-plugin": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "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==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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==", + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "immer": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/immer/-/immer-7.0.9.tgz", + "integrity": "sha512-Vs/gxoM4DqNAYR7pugIxi0Xc8XAun/uy7AQu4fLLqaTBHxjOP9pJ266Q9MWA/ly4z6rAFZbvViOtihxUZ7O28A==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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==", + "optional": 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==" + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "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==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "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==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "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==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "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==", + "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==" + }, + "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==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", + "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", + "requires": { + "@jest/core": "^26.6.0", + "import-local": "^3.0.2", + "jest-cli": "^26.6.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==", + "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==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-circus": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", + "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" + }, + "jest-resolve": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.0.tgz", + "integrity": "sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ==", + "requires": { + "@jest/types": "^26.6.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.0", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watch-typeahead": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz", + "integrity": "sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^26.0.0", + "jest-watcher": "^26.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", + "requires": { + "string-convert": "^0.2.0" + } + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", + "requires": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + } + }, + "keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==" + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "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==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "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==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + } + }, + "mini-css-extract-plugin": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", + "integrity": "sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "mini-store": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.6.tgz", + "integrity": "sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==", + "requires": { + "hoist-non-react-statics": "^3.3.2", + "shallowequal": "^1.0.2" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mobx": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.2.0.tgz", + "integrity": "sha512-j5f16JIq2v4flvYCqaAB9tMtJt/y5efR2OO5Xy+w4/MBMeQ1WeGR0T8BtiNgmxM/OQzPFUKb5DTex9Y8a/yk+g==" + }, + "mobx-react-lite": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz", + "integrity": "sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g==" + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "optional": true + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "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" + } + }, + "native-url": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", + "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", + "requires": { + "querystring": "^0.2.0" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "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==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", + "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-releases": { + "version": "1.1.70", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", + "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "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": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object-is": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", + "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.1.tgz", + "integrity": "sha512-Pxv+fKRsd/Ozflgn2Gjev1HZveJJeKR6hKKmdaImJMuEZ6htAvCTbcMABJo+qevlAelTLCrEK3YTKZ9fVTcSPw==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "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": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + } + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "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" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } + }, + "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==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "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==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "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==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-safe-parser": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz", + "integrity": "sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==", + "requires": { + "postcss": "^8.1.0" + }, + "dependencies": { + "postcss": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", + "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", + "requires": { + "colorette": "^1.2.1", + "nanoid": "^3.1.20", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", + "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "pretty-bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz", + "integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==" + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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==", + "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==" + }, + "react-is": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", + "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, + "rc-align": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.9.tgz", + "integrity": "sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "dom-align": "^1.7.0", + "rc-util": "^5.3.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-cascader": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.2.tgz", + "integrity": "sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "array-tree-filter": "^2.1.0", + "rc-trigger": "^5.0.4", + "rc-util": "^5.0.1", + "warning": "^4.0.1" + } + }, + "rc-checkbox": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz", + "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1" + } + }, + "rc-collapse": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.0.tgz", + "integrity": "sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.3.4", + "rc-util": "^5.2.1", + "shallowequal": "^1.1.0" + } + }, + "rc-dialog": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.2.tgz", + "integrity": "sha512-3n4taFcjqhTE9uNuzjB+nPDeqgRBTEGBfe46mb1e7r88DgDo0lL4NnxY/PZ6PJKd2tsCt+RrgF/+YeTvJ/Thsw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-motion": "^2.3.0", + "rc-util": "^5.6.1" + } + }, + "rc-drawer": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.3.1.tgz", + "integrity": "sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-util": "^5.7.0" + } + }, + "rc-dropdown": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.0.tgz", + "integrity": "sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-trigger": "^5.0.4" + } + }, + "rc-field-form": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.20.0.tgz", + "integrity": "sha512-jkzsIfXR7ywEYdeAtktt1aLff88wxIPDLpq7KShHNl4wlsWrCE+TzkXBfjvVzYOVZt5GGrD8YDqNO/q6eaR/eA==", + "requires": { + "@babel/runtime": "^7.8.4", + "async-validator": "^3.0.3", + "rc-util": "^5.8.0" + } + }, + "rc-image": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.4.tgz", + "integrity": "sha512-kWOjhZC1OoGKfvWqtDoO9r8WUNswBwnjcstI6rf7HMudz0usmbGvewcWqsOhyaBRJL9+I4eeG+xiAoxV1xi75Q==", + "requires": { + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-dialog": "~8.5.0", + "rc-util": "^5.0.6" + } + }, + "rc-input-number": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.1.0.tgz", + "integrity": "sha512-ewgtKZaDmwbOWX8DXBGV+amp1IiGS8G+5xDqn85CK1BiQMwsQdrmMEqNkbTdxO8EmYbwN1iQQ4t82IkAaIoa3A==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.9.8" + } + }, + "rc-mentions": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.5.3.tgz", + "integrity": "sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-menu": "^8.0.1", + "rc-textarea": "^0.3.0", + "rc-trigger": "^5.0.4", + "rc-util": "^5.0.1" + } + }, + "rc-menu": { + "version": "8.10.7", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.10.7.tgz", + "integrity": "sha512-m/ypV7OjkkUsMdutzMUxEI8tWyi0Y1TQ5YkSDk7k2uv2aCKkHYEoDKsDAfcPeejo3HMo2z5unWE+jD+dCphraw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "mini-store": "^3.0.1", + "rc-motion": "^2.0.1", + "rc-trigger": "^5.1.2", + "rc-util": "^5.7.0", + "resize-observer-polyfill": "^1.5.0", + "shallowequal": "^1.1.0" + } + }, + "rc-motion": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.3.tgz", + "integrity": "sha512-GZLLFXHl/VqTfI7bSZNNZozcblNmDka1AAoQig7EZ6s0rWg5y0RlgrcHWO+W+nrOVbYfJDxoaQUoP2fEmvCWmA==", + "requires": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.2.1" + } + }, + "rc-notification": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.5.tgz", + "integrity": "sha512-YIfhTSw+h5GsSdgMnuMx24wqiPlg3FeamuOlkh9RkyHx+SeZVAKzQ0juy2NGvPEF2hDWi5xTqxUqLdo0L2AmGg==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.2.0", + "rc-util": "^5.0.1" + } + }, + "rc-overflow": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.1.1.tgz", + "integrity": "sha512-bkGrxvWtz6xQfxBPBQcN8xOEHFCeG0R4pfLAku6kFLQF9NPMTt5HvT+Bq0+stqom9eI3WRlun6RPzfjTamPwew==", + "requires": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.5.1" + } + }, + "rc-pagination": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz", + "integrity": "sha512-Pb2zJEt8uxXzYCWx/2qwsYZ3vSS9Eqdw0cJBli6C58/iYhmvutSBqrBJh51Z5UzYc5ZcW5CMeP5LbbKE1J3rpw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1" + } + }, + "rc-picker": { + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.10.tgz", + "integrity": "sha512-d2or2jql9SSY8CaRPybpbKkXBq3bZ6g88UKyWQZBLTCrc92Xm87RfRC/P3UEQo/CLmia3jVF7IXVi1HmNe2DZA==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "date-fns": "^2.15.0", + "moment": "^2.24.0", + "rc-trigger": "^5.0.4", + "rc-util": "^5.4.0", + "shallowequal": "^1.1.0" + } + }, + "rc-progress": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.3.tgz", + "integrity": "sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6" + } + }, + "rc-rate": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz", + "integrity": "sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.0.1" + } + }, + "rc-resize-observer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz", + "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-util": "^5.0.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-select": { + "version": "12.1.10", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-12.1.10.tgz", + "integrity": "sha512-LQdUhYncvcULlrNcAShYicc1obPtnNK7/rvCD+YCm0b2BLLYxl3M3b/HOX6o+ppPej+yZulkUPeU6gcgcp9nag==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-overflow": "^1.0.0", + "rc-trigger": "^5.0.4", + "rc-util": "^5.9.8", + "rc-virtual-list": "^3.2.0" + } + }, + "rc-slider": { + "version": "9.7.2", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.2.tgz", + "integrity": "sha512-mVaLRpDo6otasBs6yVnG02ykI3K6hIrLTNfT5eyaqduFv95UODI9PDS6fWuVVehVpdS4ENgOSwsTjrPVun+k9g==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-tooltip": "^5.0.1", + "rc-util": "^5.0.0", + "shallowequal": "^1.1.0" + } + }, + "rc-steps": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.3.tgz", + "integrity": "sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA==", + "requires": { + "@babel/runtime": "^7.10.2", + "classnames": "^2.2.3", + "rc-util": "^5.0.1" + } + }, + "rc-switch": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz", + "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-util": "^5.0.1" + } + }, + "rc-table": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.13.3.tgz", + "integrity": "sha512-oP4fknjvKCZAaiDnvj+yzBaWcg+JYjkASbeWonU1BbrLcomkpKvMUgPODNEzg0QdXA9OGW0PO86h4goDSW06Kg==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.4.0", + "shallowequal": "^1.1.0" + } + }, + "rc-tabs": { + "version": "11.7.3", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz", + "integrity": "sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==", + "requires": { + "@babel/runtime": "^7.11.2", + "classnames": "2.x", + "rc-dropdown": "^3.1.3", + "rc-menu": "^8.6.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.5.0" + } + }, + "rc-textarea": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.4.tgz", + "integrity": "sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.7.0" + } + }, + "rc-tooltip": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.0.tgz", + "integrity": "sha512-pFqD1JZwNIpbdcefB7k5xREoHAWM/k3yQwYF0iminbmDXERgq4rvBfUwIvlCqqZSM7HDr9hYeYr6ZsVNaKtvCQ==", + "requires": { + "@babel/runtime": "^7.11.2", + "rc-trigger": "^5.0.0" + } + }, + "rc-tree": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.5.tgz", + "integrity": "sha512-q2vjcmnBDylGZ9/ZW4F9oZMKMJdbFWC7um+DAQhZG1nqyg1iwoowbBggUDUaUOEryJP+08bpliEAYnzJXbI5xQ==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-util": "^5.0.0", + "rc-virtual-list": "^3.0.1" + } + }, + "rc-tree-select": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.2.tgz", + "integrity": "sha512-tkouzhl8OpbTg4C9tVuP8nJ5jiZS7/wiusOIcFVgswhs1V3Jc+XHMKpLhR01egJ1bgsW1A6VrVCz3udxtdJSDA==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-select": "^12.0.0", + "rc-tree": "^4.0.0", + "rc-util": "^5.0.5" + } + }, + "rc-trigger": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.6.tgz", + "integrity": "sha512-XHsO7IBBDDIlBV++BTrmw2kCVNpNZQZCkT7d/edGWAsCxUTSYntw4gBXavicw/L0iT+rox8m5dgyZmMbmxoQJQ==", + "requires": { + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-align": "^4.0.0", + "rc-motion": "^2.0.0", + "rc-util": "^5.5.0" + } + }, + "rc-upload": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.2.0.tgz", + "integrity": "sha512-BXtvBs1PnwLjaUzBBU5z4yb9NMSaxc6mUIoPmS9LUAzaTz12L3TLrwu+8dnopYUiyLmYFS3LEO7aUfEWBqJfSA==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.2.0" + } + }, + "rc-util": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.12.1.tgz", + "integrity": "sha512-PrvX/LUPONoeIaJ35hiS5SeXP6DhwAfpoJG6X4Kc5X7NDgCgk/NfXrNfmijuSh8suHkWk1Quz93d2JdjomwOQA==", + "requires": { + "@babel/runtime": "^7.12.5", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } + }, + "rc-virtual-list": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz", + "integrity": "sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q==", + "requires": { + "classnames": "^2.2.6", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.0.7" + } + }, + "react": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", + "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-app-polyfill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz", + "integrity": "sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==", + "requires": { + "core-js": "^3.6.5", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "whatwg-fetch": "^3.4.1" + } + }, + "react-dev-utils": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.2.tgz", + "integrity": "sha512-xG7GlMoYkrgc2M1kDCHKRywXMDbFnjOB+/VzpytQyYBusEzR8NlGTMmUbvN86k94yyKu5XReHB8eZC2JZrNchQ==", + "requires": { + "@babel/code-frame": "7.10.4", + "address": "1.1.2", + "browserslist": "4.14.2", + "chalk": "2.4.2", + "cross-spawn": "7.0.3", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.1.0", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "4.1.6", + "global-modules": "2.0.0", + "globby": "11.0.1", + "gzip-size": "5.1.1", + "immer": "7.0.9", + "is-root": "2.1.0", + "loader-utils": "2.0.0", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "prompts": "2.4.0", + "react-error-overlay": "^6.0.9", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "browserslist": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "requires": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "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==" + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "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" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==", + "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==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "react-dom": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", + "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.1" + } + }, + "react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-popper": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz", + "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + }, + "react-refresh": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", + "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" + }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-scripts": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.2.tgz", + "integrity": "sha512-okaWNaGDGtnXyM2CLMUl8gYZnAubgxEulC40FYjsxn5bbj+G/mDINdy24wHz4Vypb/LWtIe8rdBU78k/74v8Mw==", + "requires": { + "@babel/core": "7.12.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", + "@svgr/webpack": "5.5.0", + "@typescript-eslint/eslint-plugin": "^4.5.0", + "@typescript-eslint/parser": "^4.5.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.7", + "babel-preset-react-app": "^10.0.0", + "bfj": "^7.0.2", + "camelcase": "^6.1.0", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "4.3.0", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^7.11.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-testing-library": "^3.9.2", + "eslint-webpack-plugin": "^2.1.0", + "file-loader": "6.1.1", + "fs-extra": "^9.0.1", + "fsevents": "^2.1.3", + "html-webpack-plugin": "4.5.0", + "identity-obj-proxy": "3.0.0", + "jest": "26.6.0", + "jest-circus": "26.6.0", + "jest-resolve": "26.6.0", + "jest-watch-typeahead": "0.6.1", + "mini-css-extract-plugin": "0.11.3", + "optimize-css-assets-webpack-plugin": "5.0.4", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.2.1", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "5.0.2", + "prompts": "2.4.0", + "react-app-polyfill": "^2.0.0", + "react-dev-utils": "^11.0.2", + "react-refresh": "^0.8.3", + "resolve": "1.18.1", + "resolve-url-loader": "^3.1.2", + "sass-loader": "^10.0.5", + "semver": "7.3.2", + "style-loader": "1.3.0", + "terser-webpack-plugin": "4.2.3", + "ts-pnp": "1.2.0", + "url-loader": "4.1.1", + "webpack": "4.44.2", + "webpack-dev-server": "3.11.0", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "5.1.4" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "requires": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "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==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "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==" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "requires": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + } + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "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==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "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==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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==", + "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" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" + }, + "sass-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", + "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "scroll-into-view-if-needed": { + "version": "2.2.28", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz", + "integrity": "sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w==", + "requires": { + "compute-scroll-into-view": "^1.0.17" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "requires": { + "node-forge": "^0.10.0" + } + }, + "semantic-ui-css": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz", + "integrity": "sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==", + "requires": { + "jquery": "x.*" + } + }, + "semantic-ui-react": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.0.3.tgz", + "integrity": "sha512-a0hGN6XXw64sRSKwWqMCKSI/AGLohxNeWuErS39eswvBbUnLjBij8ZoEdiqDiz/PuWpwYIRjgmQVrut+7h3b2g==", + "requires": { + "@babel/runtime": "^7.10.5", + "@fluentui/react-component-event-listener": "~0.51.6", + "@fluentui/react-component-ref": "~0.51.6", + "@popperjs/core": "^2.6.0", + "@semantic-ui-react/event-stack": "^3.1.2", + "clsx": "^1.1.1", + "keyboard-key": "^1.1.0", + "lodash": "^4.17.19", + "lodash-es": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.8.6 || ^17.0.0", + "react-popper": "^2.2.4", + "shallowequal": "^1.1.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "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==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "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": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "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==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "optional": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "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==", + "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==", + "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==" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "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==", + "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": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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==", + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "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==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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==", + "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-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "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==" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "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==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "requires": { + "escape-string-regexp": "^2.0.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==" + } + } + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "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": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" + }, + "string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", + "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "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==" + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "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==" + }, + "style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.0.tgz", + "integrity": "sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "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==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "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==" + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "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==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "requires": { + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "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==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "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": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "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": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "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": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" + }, + "v8-to-istanbul": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", + "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": 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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": 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": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": 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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": 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==", + "optional": 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" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-vitals": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.0.tgz", + "integrity": "sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg==" + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "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": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "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==" + }, + "workbox-background-sync": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", + "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-broadcast-update": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", + "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-build": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", + "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", + "requires": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "workbox-cacheable-response": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", + "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-core": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", + "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" + }, + "workbox-expiration": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", + "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-google-analytics": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", + "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", + "requires": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "workbox-navigation-preload": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", + "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-precaching": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", + "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-range-requests": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", + "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-routing": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", + "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-strategies": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", + "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-streams": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", + "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-sw": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", + "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" + }, + "workbox-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", + "requires": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + } + }, + "workbox-window": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", + "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "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==", + "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==", + "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==", + "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==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==" + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "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==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "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==" + } + } +} diff --git a/src/WebUI/client-app/package.json b/src/WebUI/client-app/package.json new file mode 100644 index 0000000..f7cb548 --- /dev/null +++ b/src/WebUI/client-app/package.json @@ -0,0 +1,59 @@ +{ + "name": "client-app", + "version": "0.1.0", + "private": true, + "dependencies": { + "@ant-design/icons": "^4.6.2", + "@testing-library/jest-dom": "^5.11.9", + "@testing-library/react": "^11.2.5", + "@testing-library/user-event": "^12.7.1", + "@types/jest": "^26.0.20", + "@types/node": "^12.20.0", + "@types/react": "^17.0.2", + "@types/react-dom": "^17.0.1", + "antd": "^4.15.4", + "axios": "^0.21.1", + "dayjs": "^1.10.4", + "formik": "^2.2.6", + "formik-antd": "^2.0.1", + "mobx": "^6.2.0", + "mobx-react-lite": "^3.2.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "react-router-dom": "^5.2.0", + "react-scripts": "4.0.2", + "semantic-ui-css": "^2.4.1", + "semantic-ui-react": "^2.0.3", + "typescript": "^4.1.5", + "uuid": "^8.3.2", + "web-vitals": "^1.1.0" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@types/react-router-dom": "^5.1.7", + "@types/uuid": "^8.3.0" + } +} diff --git a/src/WebUI/client-app/public/assets/orru-logo-300.png b/src/WebUI/client-app/public/assets/orru-logo-300.png new file mode 100644 index 0000000..8d155a8 Binary files /dev/null and b/src/WebUI/client-app/public/assets/orru-logo-300.png differ diff --git a/src/WebUI/client-app/public/assets/ouh_logo_left_aligned_RGB.png b/src/WebUI/client-app/public/assets/ouh_logo_left_aligned_RGB.png new file mode 100644 index 0000000..0dd554e Binary files /dev/null and b/src/WebUI/client-app/public/assets/ouh_logo_left_aligned_RGB.png differ diff --git a/src/WebUI/client-app/public/assets/ouh_logo_right_aligned_RGB.png b/src/WebUI/client-app/public/assets/ouh_logo_right_aligned_RGB.png new file mode 100644 index 0000000..56324a3 Binary files /dev/null and b/src/WebUI/client-app/public/assets/ouh_logo_right_aligned_RGB.png differ diff --git a/src/WebUI/client-app/public/assets/ouhlogo.png b/src/WebUI/client-app/public/assets/ouhlogo.png new file mode 100644 index 0000000..0498925 Binary files /dev/null and b/src/WebUI/client-app/public/assets/ouhlogo.png differ diff --git a/src/WebUI/client-app/public/assets/radiation.svg b/src/WebUI/client-app/public/assets/radiation.svg new file mode 100644 index 0000000..700bbf6 --- /dev/null +++ b/src/WebUI/client-app/public/assets/radiation.svg @@ -0,0 +1,2 @@ + + diff --git a/src/WebUI/client-app/public/favicon.ico b/src/WebUI/client-app/public/favicon.ico new file mode 100644 index 0000000..f9d090d Binary files /dev/null and b/src/WebUI/client-app/public/favicon.ico differ diff --git a/src/WebUI/client-app/public/index.html b/src/WebUI/client-app/public/index.html new file mode 100644 index 0000000..6014e94 --- /dev/null +++ b/src/WebUI/client-app/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + ORRAS: Oxford Research Radiation Assurance Service + + + +
+ + + diff --git a/src/WebUI/client-app/public/logo192.png b/src/WebUI/client-app/public/logo192.png new file mode 100644 index 0000000..fc44b0a Binary files /dev/null and b/src/WebUI/client-app/public/logo192.png differ diff --git a/src/WebUI/client-app/public/logo512.png b/src/WebUI/client-app/public/logo512.png new file mode 100644 index 0000000..a4e47a6 Binary files /dev/null and b/src/WebUI/client-app/public/logo512.png differ diff --git a/src/WebUI/client-app/public/manifest.json b/src/WebUI/client-app/public/manifest.json new file mode 100644 index 0000000..7595311 --- /dev/null +++ b/src/WebUI/client-app/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "ORRAS", + "name": "ORRAS: Oxford Research Radiation Assurance Service", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/src/WebUI/client-app/public/robots.txt b/src/WebUI/client-app/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/src/WebUI/client-app/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/WebUI/client-app/src/app/api/agent.ts b/src/WebUI/client-app/src/app/api/agent.ts new file mode 100644 index 0000000..e583ffe --- /dev/null +++ b/src/WebUI/client-app/src/app/api/agent.ts @@ -0,0 +1,88 @@ +import { message } from 'antd'; +import axios, { AxiosError, AxiosResponse } from 'axios'; +import { history } from '../..'; +import { UserFormValues } from '../models/user'; +import { store } from '../stores/store'; + +const sleep = (delay: number) => { + return new Promise((resolve) => { + setTimeout(resolve, delay) + }) +} +axios.defaults.baseURL = process.env.REACT_APP_API_URL; + +// send bearer token with every client request +axios.interceptors.request.use(config => { + const token = store.commonStore.token; + if (token) config.headers.Authorization = `Bearer ${token}`; + return config; +}) + +// provides a delay to the response to support the indicating of loading +axios.interceptors.response.use(async response => { + if(process.env.NODE_ENV === 'development') await sleep(1000); + return response; +}, (error: AxiosError) => { + const { data, status, config } = error.response!; + switch (status) { + case 400: + if (typeof data === 'string'){ + message.error(data) + } + if (config.method === 'get' && data.errors.hasOwnProperty('id')) { + history.push('/not-found') + } + if (data.errors) { + const modelStateErrors = [] + for (const key in data.errors) { + if (data.errors[key]) { + modelStateErrors.push(data.errors[key]) + } + } + throw modelStateErrors.flat(); + } + break; + case 401: + message.error("unauthorised"); + break; + case 404: + history.push('/not-found'); + break; + case 500: + store.commonStore.setServerError(data) + history.push('/server-error') + break; + } + return Promise.reject(error); +}) + +const responseBody = (response: AxiosResponse) => response.data; + +const requests = { + get: (url: string) => axios.get(url).then(responseBody), + post: (url: string, body: {}) => axios.post(url, body).then(responseBody), + put: (url: string, body: {}) => axios.put(url, body).then(responseBody), + del: (url: string) => axios.delete(url).then(responseBody), +} + +// http methods for each resource go here + +const Studies = { + list: () => requests.get('/studies'), + details: (id: string) => requests.get(`/studies/${id}`) +} + +// http methods for account endpoint +const Account = { + current: () => requests.get('/account'), + login: (user: UserFormValues) => requests.post('/account/login', user), + register: (user: UserFormValues) => requests.post('/account/register', user) +} + +// register methods with agent +const agent = { + Studies, + Account +} + +export default agent; \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/common/form/CustomTextInput.tsx b/src/WebUI/client-app/src/app/common/form/CustomTextInput.tsx new file mode 100644 index 0000000..47d70b0 --- /dev/null +++ b/src/WebUI/client-app/src/app/common/form/CustomTextInput.tsx @@ -0,0 +1,22 @@ +import { useField } from 'formik'; +import React from 'react'; +import { Form, Label } from 'semantic-ui-react'; +interface Props { + placeholder: string; + name: string; + label?: string; + type?: string +} + +export default function CustomTextInput(props: Props) { + const [field, meta] = useField(props.name); + return ( + + + + {meta.touched && meta.error ? ( + + ): null} + + ) +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/common/modals/ModalContainer.tsx b/src/WebUI/client-app/src/app/common/modals/ModalContainer.tsx new file mode 100644 index 0000000..cc86c28 --- /dev/null +++ b/src/WebUI/client-app/src/app/common/modals/ModalContainer.tsx @@ -0,0 +1,14 @@ +import { observer } from 'mobx-react-lite'; +import React from 'react'; +import { Modal } from 'semantic-ui-react'; +import { useStore } from '../../stores/store'; + +export default observer(function ModalContainer() { + const { modalStore } = useStore(); + const { closeModal } = modalStore; + return ( + + {modalStore.modal.body} + + ); +}); diff --git a/src/WebUI/client-app/src/app/layout/App.test.tsx b/src/WebUI/client-app/src/app/layout/App.test.tsx new file mode 100644 index 0000000..2a68616 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/WebUI/client-app/src/app/layout/App.tsx b/src/WebUI/client-app/src/app/layout/App.tsx new file mode 100644 index 0000000..177e7f6 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/App.tsx @@ -0,0 +1,36 @@ +import { useEffect } from 'react'; +import { Route } from 'react-router-dom'; +import LandingPage from '../../features/landing/LandingPage'; +import AppLayout from './AppLayout'; +import ModalContainer from '../common/modals/ModalContainer'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '../stores/store'; + +function App() { + const { commonStore, userStore } = useStore(); + + // persist the user login by getting a locally stored token + useEffect(() => { + if (commonStore.token) { + userStore.getUser().finally(() => commonStore.setAppLoaded()) + } else { + commonStore.setAppLoaded(); + } + }, [commonStore, userStore]) + + return ( + <> + + + ( + <> + + + )} + /> + + ); +} +export default observer(App); diff --git a/src/WebUI/client-app/src/app/layout/AppLayout.tsx b/src/WebUI/client-app/src/app/layout/AppLayout.tsx new file mode 100644 index 0000000..fc55851 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/AppLayout.tsx @@ -0,0 +1,58 @@ +import { Layout } from 'antd'; +import { Route, Switch } from 'react-router-dom'; +import Dashboard from '../../features/home/Home'; +import TopNavBar from './TopNavBar'; +import SideNavBar from './SideNavBar'; +import { observer } from 'mobx-react-lite'; +import StudyDashboard from '../../features/studies/dashboard/StudyDashboard'; +import AssuranceRequestsDashboard from '../../features/assurancerequests/dashboard/AssuranceRequestsDashboard'; +import ClinicalDashboard from '../../features/clinical/dashboard/ClinicalDashboard'; +import TestErrors from '../../features/errors/TestError'; +import NotFound from '../../features/errors/NotFound'; +import ServerError from '../../features/errors/ServerError'; +import { useStore } from '../stores/store'; +import LoadingPage from './LoadingPage'; +import StudyDetails from '../../features/studies/details/StudyDetails'; +import PrivateRoute from './PrivateRoute'; +import Home from '../../features/home/Home'; + +const {Header, Content, Footer } = Layout; + +export default observer(function AppLayout() { + + const { commonStore } = useStore(); + + if(!commonStore.appLoaded) return + + return ( + + + + {/*
*/} + {/*
*/} + + + + +
+ + + + + + + + + + + + + +
+
+
Copyright © 2021 Oxford University Hospitals NHS Foundation Trust
+
+ + + ); +}) diff --git a/src/WebUI/client-app/src/app/layout/LoadingPage.tsx b/src/WebUI/client-app/src/app/layout/LoadingPage.tsx new file mode 100644 index 0000000..dd7f8db --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/LoadingPage.tsx @@ -0,0 +1,21 @@ +import { Space, Spin } from 'antd'; +import Layout from 'antd/lib/layout/layout'; +import React from 'react'; + +interface Props {} + +export default function LoadingPage({}: Props) { + return ( +
+ + +
+ ); +} diff --git a/src/WebUI/client-app/src/app/layout/PrivateRoute.tsx b/src/WebUI/client-app/src/app/layout/PrivateRoute.tsx new file mode 100644 index 0000000..69abe64 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/PrivateRoute.tsx @@ -0,0 +1,17 @@ +import { Redirect, Route, RouteComponentProps, RouteProps } from "react-router-dom"; +import { useStore } from "../stores/store"; + +interface Props extends RouteProps { + component: React.ComponentType> | React.ComponentType; +} + +export default function PrivateRoute({component: Component, ...rest}: Props) { + const { userStore: { isLoggedIn } } = useStore(); + + return ( + isLoggedIn ? : } + /> + ) +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/layout/SideNavBar.tsx b/src/WebUI/client-app/src/app/layout/SideNavBar.tsx new file mode 100644 index 0000000..e4a10b0 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/SideNavBar.tsx @@ -0,0 +1,69 @@ +import { Layout, Menu } from 'antd'; +import { NavLink, useHistory } from 'react-router-dom'; +import { + ContainerOutlined, + DashboardOutlined, + EditOutlined, + ExclamationCircleOutlined, + HomeOutlined, + LineChartOutlined, + MedicineBoxOutlined, + PieChartOutlined, + ToolOutlined, +} from '@ant-design/icons'; +import React, { useEffect, useState } from 'react'; +import { useStore } from '../stores/store'; +import { observer } from 'mobx-react-lite'; + +const { Header, Sider } = Layout; + +export default observer(function SideNavBar() { + const { sideNavbarStore } = useStore(); + const {handleToggle, setCollapse} = sideNavbarStore + + useEffect(() => { + window.innerWidth <= 760 ? setCollapse(true) : setCollapse(false); + }, []); + + return ( + handleToggle()}> +
+ + }> + + Home + + + }> + + Assurance Requests + + + }> + + Research Studies + + + } title='Clinical'> + }> + + Dashboard + + + }> + + Participants + + + + } title='Admin Centre'> + }> + + Test Errors + + + + + + ); +}) diff --git a/src/WebUI/client-app/src/app/layout/TopNavBar.tsx b/src/WebUI/client-app/src/app/layout/TopNavBar.tsx new file mode 100644 index 0000000..77be2e8 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/TopNavBar.tsx @@ -0,0 +1,85 @@ +import Icon, { BellOutlined, DownOutlined, IdcardOutlined, LogoutOutlined, MailOutlined, MenuFoldOutlined, MenuUnfoldOutlined, NotificationFilled, SearchOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; +import { Button, Dropdown, Menu, Popover, Tooltip } from 'antd'; +import Avatar from 'antd/lib/avatar/avatar'; +import Layout, { Header } from 'antd/lib/layout/layout'; +import { observer } from 'mobx-react-lite'; +import React from 'react'; +import { history } from '../..'; +import NotificationTray from '../../features/notifications/NotificationTray'; +import { useStore } from '../stores/store'; + + + +const { SubMenu } = Menu; + +export default observer(function TopNavBar() { + const { sideNavbarStore, userStore: {user, logout} } = useStore(); + + const handleClickMyProfile = () => { + history.push("/myprofile") + } + + const accountMenu = ( + + + } key="setting:1" onClick={() => handleClickMyProfile() }> + My Profile + + + + } onClick={() => logout()} key="setting:2">Sign Out + + ); + + + const content = ( +
+

Content

+

Content

+
+ ) + return ( +
+ +
+ {React.createElement(sideNavbarStore.sider.collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, { + className: 'trigger', + onClick: sideNavbarStore.handleToggle + })} +
+
+ +
+ + + +
+ + + + + +
+ +
+ +
+ }> +
+
+
+ ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/layout/images/bed.jpg b/src/WebUI/client-app/src/app/layout/images/bed.jpg new file mode 100644 index 0000000..77529f8 Binary files /dev/null and b/src/WebUI/client-app/src/app/layout/images/bed.jpg differ diff --git a/src/WebUI/client-app/src/app/layout/images/doctors.jpg b/src/WebUI/client-app/src/app/layout/images/doctors.jpg new file mode 100644 index 0000000..abb3f35 Binary files /dev/null and b/src/WebUI/client-app/src/app/layout/images/doctors.jpg differ diff --git a/src/WebUI/client-app/src/app/layout/images/radiation.svg b/src/WebUI/client-app/src/app/layout/images/radiation.svg new file mode 100644 index 0000000..700bbf6 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/images/radiation.svg @@ -0,0 +1,2 @@ + + diff --git a/src/WebUI/client-app/src/app/layout/images/scanner.jpg b/src/WebUI/client-app/src/app/layout/images/scanner.jpg new file mode 100644 index 0000000..17944aa Binary files /dev/null and b/src/WebUI/client-app/src/app/layout/images/scanner.jpg differ diff --git a/src/WebUI/client-app/src/app/layout/styles.css b/src/WebUI/client-app/src/app/layout/styles.css new file mode 100644 index 0000000..5254cd3 --- /dev/null +++ b/src/WebUI/client-app/src/app/layout/styles.css @@ -0,0 +1,75 @@ +body { + background-color: #eaeaea !important; +} + +.fill-window { + height: 100vh; + position: fixed; + left: 0; + width: 100%; + overflow: hidden; +} + +.header { + display: inherit; +} + +.logo { + height: 32px; + margin: 16px; + background: rgba(255, 255, 255, 0.3); + background-image: url(./images/radiation.svg); + background-size: contain; + background-repeat: no-repeat; + background-position:left, top; +} + +.flex-setting { + display: flex; + flex-direction: row-reverse; + width: 100%; +} + +/* landing page style */ + +.landing-footer{ + position: fixed; + bottom : 0; + width: 100%; + overflow: hidden; +} + +.landing-header{ + position: fixed; + width: 100%; + z-index: 1; + background-color: white; + +} + +.landing-image { + background-image: url(./images/scanner.jpg); + background-position: center center; + background-size: contain; + background-repeat:no-repeat; + background-color: white; +} + +/* end landing page style */ +.trigger { + margin-left: 16px; + font-size: 20px; + line-height: 64px; + cursor: pointer; + transition: color 0.3s; +} +.trigger:hover { + color: #1890ff; +} + +/* Study Page Style */ + +.study-page-header { + padding: 0; + border: 1px solid rgb(235, 237, 240); +} diff --git a/src/WebUI/client-app/src/app/models/serverError.ts b/src/WebUI/client-app/src/app/models/serverError.ts new file mode 100644 index 0000000..6a20a70 --- /dev/null +++ b/src/WebUI/client-app/src/app/models/serverError.ts @@ -0,0 +1,6 @@ +export interface ServerError { + status: number; + message: string; + title: string; + details: string; +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/models/study.ts b/src/WebUI/client-app/src/app/models/study.ts new file mode 100644 index 0000000..8006912 --- /dev/null +++ b/src/WebUI/client-app/src/app/models/study.ts @@ -0,0 +1,17 @@ +export interface Study { + id: string; + localPID: string; + irasProjectID: string; + eudraCTReference: string; + hraReference: string; + shortTitle: string; + acronym: string; + longTitle: string; + created: string + estimatedStartDate: string +} + +export interface StudyList { + key: string + studies: Study[]; +} diff --git a/src/WebUI/client-app/src/app/models/user.ts b/src/WebUI/client-app/src/app/models/user.ts new file mode 100644 index 0000000..d854514 --- /dev/null +++ b/src/WebUI/client-app/src/app/models/user.ts @@ -0,0 +1,14 @@ +export interface User { + username: string + displayName: string + jobTitle: string + token: string + +} + +export interface UserFormValues { + email: string; + password: string; + displayName?: string; + username?: string; +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/commonStore.ts b/src/WebUI/client-app/src/app/stores/commonStore.ts new file mode 100644 index 0000000..b8fd11f --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/commonStore.ts @@ -0,0 +1,34 @@ +import { makeAutoObservable, reaction } from "mobx"; +import { ServerError } from "../models/serverError"; + +export default class CommonStore { + error: ServerError | null = null; + token: string | null = window.localStorage.getItem('jwt'); + appLoaded = false; + + constructor() { + makeAutoObservable(this); + + reaction(() => this.token, + token => { + if (token) { + window.localStorage.setItem('jwt', token); + } else { + window.localStorage.removeItem('jwt') + } + } + ) + } + + setServerError = ((error: ServerError) => { + this.error = error + }) + + setToken = (token: string | null) => { + this.token = token; + } + + setAppLoaded = () => { + this.appLoaded = true; + } +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/modalStore.ts b/src/WebUI/client-app/src/app/stores/modalStore.ts new file mode 100644 index 0000000..d21fa8c --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/modalStore.ts @@ -0,0 +1,28 @@ +import { makeAutoObservable } from "mobx"; + +interface Modal { + open: boolean; + body: JSX.Element | null; +} + +export default class ModalStore { + modal: Modal = { + open: false, + body: null, + }; + + constructor() { + makeAutoObservable(this); + } + + openModal = (content: JSX.Element) => { + this.modal.open = true; + + this.modal.body = content; + } + + closeModal = () => { + this.modal.open = false; + this.modal.body = null; + } +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/sideNavbarStore.ts b/src/WebUI/client-app/src/app/stores/sideNavbarStore.ts new file mode 100644 index 0000000..1d41392 --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/sideNavbarStore.ts @@ -0,0 +1,24 @@ +import { makeAutoObservable, runInAction } from "mobx"; + +interface Sider { + collapsed: boolean; +} + +export default class SideNavBarStore { + sider: Sider = { + collapsed: false + } + constructor() { + makeAutoObservable(this); + } + + setCollapse = (result: boolean) => { + this.sider.collapsed = result; + }; + + handleToggle = () => { + this.sider.collapsed ? this.setCollapse(false) : this.setCollapse(true); + }; + + +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/store.ts b/src/WebUI/client-app/src/app/stores/store.ts new file mode 100644 index 0000000..4c4eea7 --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/store.ts @@ -0,0 +1,27 @@ +import { createContext, useContext } from "react" +import CommonStore from "./commonStore"; +import ModalStore from "./modalStore"; +import SideNavBarStore from "./sideNavbarStore"; +import StudyStore from "./studyStore"; +import UserStore from "./userStore"; + +interface Store { + sideNavbarStore: SideNavBarStore; + userStore: UserStore; + modalStore: ModalStore; + studyStore: StudyStore; + commonStore: CommonStore; +} +export const store: Store = { + sideNavbarStore: new SideNavBarStore(), + userStore: new UserStore(), + modalStore: new ModalStore(), + studyStore: new StudyStore(), + commonStore: new CommonStore(), +} + +export const StoreContext = createContext(store); + +export function useStore() { + return useContext(StoreContext); +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/studyStore.ts b/src/WebUI/client-app/src/app/stores/studyStore.ts new file mode 100644 index 0000000..0754069 --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/studyStore.ts @@ -0,0 +1,73 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import agent from "../api/agent"; +import { Study } from "../models/study"; + +export default class StudyStore { + studyRegistry = new Map(); + selectedStudy: Study | undefined = undefined; + loading = false; + loadingInitial = true; + + constructor() { + makeAutoObservable(this) + } + + // computed property + get studiesByDate() { + return Array.from(this.studyRegistry.values()).sort((a, b) => + // TODO: this smells - sort out date handling strategy + Date.parse(a.created) - Date.parse(b.created)); + } + + + loadStudies = async () => { + this.setLoadingInitial(true); + try { + const response = await agent.Studies.list(); + response.studies.forEach((study: Study) => { + this.setStudy(study) + }) + this.setLoadingInitial(false); + } catch (error) { + console.log(error); + this.setLoadingInitial(false); + } + } + + + loadStudy = async (id:string) => { + let study = this.getStudy(id); + if (study) { + this.selectedStudy = study; + return study; + } else { + this.loadingInitial = true; + try { + study = await agent.Studies.details(id); + this.setStudy(study); + runInAction(() => { this.selectedStudy = study }); + this.setLoadingInitial(false); + return study; + } catch (error) { + console.log(error); + this.setLoadingInitial(false); + } + } + } + + private getStudy = (id: string) => { + return this.studyRegistry.get(id); + } + // TODO: add back strong typing + private setStudy = (study: any) => { + + // TODO: this smells - sort out date handling strategy + study.created = study.created.split('T')[0]; + study.estimatedStartDate = study.estimatedStartDate.split('T')[0]; + this.studyRegistry.set(study.id, study); + } + + setLoadingInitial = (state: boolean) => { + this.loadingInitial = state; + } +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/app/stores/userStore.ts b/src/WebUI/client-app/src/app/stores/userStore.ts new file mode 100644 index 0000000..08b4620 --- /dev/null +++ b/src/WebUI/client-app/src/app/stores/userStore.ts @@ -0,0 +1,50 @@ +import { makeAutoObservable, runInAction } from "mobx"; +import agent from "../api/agent"; +import { User, UserFormValues } from "../models/user"; +import { store } from "./store"; +import { history } from "../.."; + +export default class UserStore { + user: User | null = null; + + constructor() { + makeAutoObservable(this) + } + + get isLoggedIn() { + return !!this.user + } + + login = async (creds: UserFormValues) => { + try { + const user = await agent.Account.login(creds); + store.commonStore.setToken(user.token); + runInAction(() => (this.user = user)); + history.push('/home'); + store.modalStore.closeModal(); + } catch (error) { + throw error; + } + } + + logout = () => { + store.commonStore.setToken(null); + window.localStorage.removeItem('jwt'); + this.user = null; + history.push('/'); + + } + + getUser = async () => { + try { + const user = await agent.Account.current(); + runInAction(() => (this.user = user)); + } catch (error) { + console.log(error); + } + } + + register = async (creds: UserFormValues) => { + + } +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/assurancerequests/dashboard/AssuranceRequestsDashboard.tsx b/src/WebUI/client-app/src/features/assurancerequests/dashboard/AssuranceRequestsDashboard.tsx new file mode 100644 index 0000000..039ddc7 --- /dev/null +++ b/src/WebUI/client-app/src/features/assurancerequests/dashboard/AssuranceRequestsDashboard.tsx @@ -0,0 +1,8 @@ +import { observer } from 'mobx-react-lite'; +import React from 'react'; + +export default observer(function AssuranceRequestsDashboard() { + return ( +

Assurance Requests

+ ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/clinical/dashboard/ClinicalDashboard.tsx b/src/WebUI/client-app/src/features/clinical/dashboard/ClinicalDashboard.tsx new file mode 100644 index 0000000..63e0377 --- /dev/null +++ b/src/WebUI/client-app/src/features/clinical/dashboard/ClinicalDashboard.tsx @@ -0,0 +1,8 @@ +import { observer } from 'mobx-react-lite'; +import React from 'react'; + +export default observer(function ClinicalDashboard() { + return ( +

Clinical Area

+ ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/errors/NotAuthorised.tsx b/src/WebUI/client-app/src/features/errors/NotAuthorised.tsx new file mode 100644 index 0000000..89b9813 --- /dev/null +++ b/src/WebUI/client-app/src/features/errors/NotAuthorised.tsx @@ -0,0 +1,17 @@ +import { Button, Result } from 'antd'; +import React from 'react'; + + +export default function NotAuthorised() { + + return ( + Go Back Home} + + /> + ) + +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/errors/NotFound.tsx b/src/WebUI/client-app/src/features/errors/NotFound.tsx new file mode 100644 index 0000000..c84e7e3 --- /dev/null +++ b/src/WebUI/client-app/src/features/errors/NotFound.tsx @@ -0,0 +1,16 @@ +import { Button, Result } from 'antd'; +import React from 'react'; + +export default function NotFound() { + + return ( + Go Back Home} + + /> + ) + +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/errors/ServerError.tsx b/src/WebUI/client-app/src/features/errors/ServerError.tsx new file mode 100644 index 0000000..6d2bf25 --- /dev/null +++ b/src/WebUI/client-app/src/features/errors/ServerError.tsx @@ -0,0 +1,36 @@ +import { Button, Result, Typography } from 'antd'; +import React from 'react'; +import { useStore } from '../../app/stores/store'; + +export default function ServerError() { + const { commonStore } = useStore(); + const { Paragraph, Text } = Typography + + return ( + Go Back Home} + > + {/* if error information exists show it */} + { commonStore.error && ( +
+ + + {commonStore.error?.title} + + + + {commonStore.error?.details && ({commonStore.error?.details})} + +
+ )} +
+ ); +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/errors/TestError.tsx b/src/WebUI/client-app/src/features/errors/TestError.tsx new file mode 100644 index 0000000..819efd2 --- /dev/null +++ b/src/WebUI/client-app/src/features/errors/TestError.tsx @@ -0,0 +1,81 @@ +import React, { useState } from 'react'; +import { Button, Header, Segment } from 'semantic-ui-react'; +import axios from 'axios'; +import ValidationErrors from './ValidationErrors'; + +export default function TestErrors() { + const baseUrl = process.env.REACT_APP_API_URL; + const [errors, setErrors] = useState(null); + + function handleNotFound() { + axios + .get(baseUrl + '/buggy/not-found') + .catch((err) => console.log(err.response)); + } + + function handleBadRequest() { + axios + .get(baseUrl + '/buggy/bad-request') + .catch((err) => console.log(err.response)); + } + + function handleServerError() { + axios + .get(baseUrl + '/buggy/server-error') + .catch((err) => console.log(err.response)); + } + + function handleUnauthorised() { + axios + .get(baseUrl + '/buggy/unauthorised') + .catch((err) => console.log(err.response)); + } + + function handleBadGuid() { + axios + .get(baseUrl + '/companies/notaguid') + .catch((err) => console.log(err.response)); + } + + function handleValidationError() { + axios.post(baseUrl + '/companies', {"id":null,"displayName":null,"Abbreviation":null}).catch((err) => setErrors(err)); + } + + return ( + <> +
+ + + + + ) : ( <> + + + + New to us? Register Here + + + + )} + + + + + + + + + ); +}) diff --git a/src/WebUI/client-app/src/features/landing/LandingPageFooter.tsx b/src/WebUI/client-app/src/features/landing/LandingPageFooter.tsx new file mode 100644 index 0000000..da061ac --- /dev/null +++ b/src/WebUI/client-app/src/features/landing/LandingPageFooter.tsx @@ -0,0 +1,21 @@ +import { Footer } from 'antd/lib/layout/layout'; +import React from 'react'; +import { + Container, + Divider, + Grid, + Header, + List, + Segment, +} from 'semantic-ui-react'; +import LandingPageVersionInfo from './LandingPageVersionInfo'; +export default function LandingPageBanner() { + return ( +
+ +
+ Copyright © 2021 Oxford University Hospitals NHS Foundation Trust +
+
+ ); +} diff --git a/src/WebUI/client-app/src/features/landing/LandingPageHeader.tsx b/src/WebUI/client-app/src/features/landing/LandingPageHeader.tsx new file mode 100644 index 0000000..fa38e60 --- /dev/null +++ b/src/WebUI/client-app/src/features/landing/LandingPageHeader.tsx @@ -0,0 +1,43 @@ +import React from 'react' +import { Menu, Image, Container, Segment } from 'semantic-ui-react'; +import { Col, Menu as AntdMenu, Row, Space } from 'antd'; +import { Header } from 'antd/lib/layout/layout'; + + +export default function LandingPageHeader() +{ + return ( +
+ + + + + + + + + + Oxford University NHS Foundation Trust logo + + +
+ ); +}; \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/landing/LandingPageVersionInfo.tsx b/src/WebUI/client-app/src/features/landing/LandingPageVersionInfo.tsx new file mode 100644 index 0000000..f05a0a7 --- /dev/null +++ b/src/WebUI/client-app/src/features/landing/LandingPageVersionInfo.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import { Icon, List } from "semantic-ui-react"; + +export default function LandingPageVersionInfo() { + return ( + + + + Manufacturer + + Medical Physics and Clinical Engineering + + + + + + Manufacture Date + + See GitHub Repo + + + + + + Release + + Version: 0.0.0 + + + + + + Documentation + + Read Our Docs + + + + + ); +} diff --git a/src/WebUI/client-app/src/features/notifications/NotificationTray.tsx b/src/WebUI/client-app/src/features/notifications/NotificationTray.tsx new file mode 100644 index 0000000..0cc8268 --- /dev/null +++ b/src/WebUI/client-app/src/features/notifications/NotificationTray.tsx @@ -0,0 +1,12 @@ +import { Card } from 'antd'; +import React, { useState } from 'react'; + +export default function NotificationTray() +{ + + return ( + + + + ) +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/dashboard/StudyDashboard.tsx b/src/WebUI/client-app/src/features/studies/dashboard/StudyDashboard.tsx new file mode 100644 index 0000000..629ce42 --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/dashboard/StudyDashboard.tsx @@ -0,0 +1,19 @@ + +import { Breadcrumb } from 'antd'; +import Title from 'antd/lib/typography/Title'; +import { observer } from 'mobx-react-lite'; +import React from 'react'; +import StudyList from './StudyList'; + +export default observer(function StudyDashboard() { + return ( + <> + + ORRAS + Research Studies + + Studies Dashboard + + + ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/dashboard/StudyList.tsx b/src/WebUI/client-app/src/features/studies/dashboard/StudyList.tsx new file mode 100644 index 0000000..59868b5 --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/dashboard/StudyList.tsx @@ -0,0 +1,41 @@ +import { Breadcrumb, Card, List } from 'antd'; +import { Table } from 'formik-antd'; +import { observer } from 'mobx-react-lite'; +import React, { useEffect } from 'react'; +import { NavLink } from 'react-router-dom'; +import { Study } from '../../../app/models/study'; +import { useStore } from '../../../app/stores/store'; +import StudyListItem from './StudyListItem'; + +export default observer(function StudyList() { + const { studyStore } = useStore(); + const { loadStudies, studyRegistry, studiesByDate, loadingInitial } = studyStore; + + useEffect(() => { + if (studyRegistry.size <= 1) loadStudies(); + }, [studyRegistry.size, loadStudies]) + + + return ( + +
+ + + {studiesByDate.map((study: Study) => ( + + {study.shortTitle}} + description={study.longTitle} + /> + + ))} + + +
+
    + +
+
+
+ ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/dashboard/StudyListItem.tsx b/src/WebUI/client-app/src/features/studies/dashboard/StudyListItem.tsx new file mode 100644 index 0000000..ece5b1e --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/dashboard/StudyListItem.tsx @@ -0,0 +1,12 @@ +import { observer } from 'mobx-react-lite'; +import React from 'react'; + +export default observer(function StudyListItem() { + return ( + <> +

Study List Item

+

Study List Item

+

Study List Item

+ + ) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/details/StudyDetails.tsx b/src/WebUI/client-app/src/features/studies/details/StudyDetails.tsx new file mode 100644 index 0000000..5e7fefe --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/details/StudyDetails.tsx @@ -0,0 +1,105 @@ +import { AuditOutlined, BookFilled, BookTwoTone, CommentOutlined, EllipsisOutlined, ExperimentOutlined, FileTextOutlined, MessageOutlined, PaperClipOutlined } from '@ant-design/icons'; +import { Button, Card, Col, Descriptions, Divider, Menu, PageHeader, Row, Space, Spin, Tabs, Tag } from 'antd'; +import { observer } from 'mobx-react-lite'; +import React, { useEffect } from 'react'; +import { useParams } from 'react-router-dom'; +import { useStore } from '../../../app/stores/store'; + +export default observer(function StudyDetails() { + const { studyStore } = useStore(); + const { loadStudy, studyRegistry, studiesByDate, loadingInitial, selectedStudy: study } = studyStore; + + const { id } = useParams<{ id: string }>(); + + function callback(key: any) { + console.log(key); + } + + useEffect(() => { + if (id) loadStudy(id); + }, [id, loadStudy]) + + if (loadingInitial || !study) return ; + + return ( +
+ window.history.back()} + title={(Study)} + subTitle={study.acronym} + tags={<> + Awaiting Approval a second tag + } + extra={[ + , + , + , + ]} + > + + {study.localPID || "-"} + + {study.estimatedStartDate} + + {study.created} + {study.irasProjectID} + {study.hraReference} + - + + Site Name Here + + Study Category Here + + - + + {study.longTitle} + + + + + +
+ + More Details} key="1"> + More Details Goes here + + + + Details + + + + + + + + + + + + + + + + + + Protocol} key="2"> + Protocol and Procedure Details goes here + + Documents} key="3"> + All associated documents goes here + + Approvals}key="4"> + details of approvals goes here + + Comments} key="5"> + Thread of Comments goes here + + +
+
) +}) \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/details/StudyDocuments.tsx b/src/WebUI/client-app/src/features/studies/details/StudyDocuments.tsx new file mode 100644 index 0000000..05463f5 --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/details/StudyDocuments.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +export default function StudyDocuments() { + return ( + <> + + ) +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/studies/details/StudyHeader.tsx b/src/WebUI/client-app/src/features/studies/details/StudyHeader.tsx new file mode 100644 index 0000000..feb7b88 --- /dev/null +++ b/src/WebUI/client-app/src/features/studies/details/StudyHeader.tsx @@ -0,0 +1,6 @@ +import React from 'react'; + +export default function StudyHeader() { + return (<> + ) +} \ No newline at end of file diff --git a/src/WebUI/client-app/src/features/users/LoginForm.tsx b/src/WebUI/client-app/src/features/users/LoginForm.tsx new file mode 100644 index 0000000..499cffa --- /dev/null +++ b/src/WebUI/client-app/src/features/users/LoginForm.tsx @@ -0,0 +1,70 @@ +import { LockOutlined, UserOutlined } from '@ant-design/icons'; +import { Button, Space } from 'antd'; +import { ErrorMessage, Formik } from 'formik'; +import { Form, Input, ResetButton, SubmitButton } from 'formik-antd'; +import { observer } from 'mobx-react-lite'; +import React from 'react'; +import { Header, Label } from 'semantic-ui-react'; +import CustomTextInput from '../../app/common/form/CustomTextInput'; +import { useStore } from '../../app/stores/store'; + +export default observer(function LoginForm() { + const { userStore } = useStore(); + + return ( + + userStore + .login(values) + .catch((error) => setErrors({ error: 'Invalid email or password' })) + } + > + {({ handleSubmit, isSubmitting, errors }) => ( +
+
+ + } placeholder="Username"/> + + + } type="password" placeholder="Password"/> + + + + + Forgot password + + + + + + + + Or Register now + + + + + ( +