From 1f15811170647fcca4f473da9245d89c70322f98 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Wed, 6 Jan 2021 14:05:58 -0500 Subject: [PATCH 01/78] add react --- simmadome/.gitignore | 24 + simmadome/README.md | 46 + simmadome/package-lock.json | 16464 +++++++++++++++++++++++++++ simmadome/package.json | 44 + simmadome/public/favicon.ico | Bin 0 -> 3870 bytes simmadome/public/index.html | 43 + simmadome/public/logo192.png | Bin 0 -> 5347 bytes simmadome/public/logo512.png | Bin 0 -> 9664 bytes simmadome/public/manifest.json | 25 + simmadome/public/robots.txt | 3 + simmadome/src/App.css | 80 + simmadome/src/App.tsx | 43 + simmadome/src/img/discord.png | Bin 0 -> 9103 bytes simmadome/src/img/naturalblack.png | Bin 0 -> 261640 bytes simmadome/src/index.css | 69 + simmadome/src/index.tsx | 34 + simmadome/src/react-app-env.d.ts | 1 + simmadome/src/reportWebVitals.ts | 15 + simmadome/src/setupTests.ts | 5 + simmadome/tsconfig.json | 26 + templates/base.html | 10 +- 21 files changed, 16923 insertions(+), 9 deletions(-) create mode 100644 simmadome/.gitignore create mode 100644 simmadome/README.md create mode 100644 simmadome/package-lock.json create mode 100644 simmadome/package.json create mode 100644 simmadome/public/favicon.ico create mode 100644 simmadome/public/index.html create mode 100644 simmadome/public/logo192.png create mode 100644 simmadome/public/logo512.png create mode 100644 simmadome/public/manifest.json create mode 100644 simmadome/public/robots.txt create mode 100644 simmadome/src/App.css create mode 100644 simmadome/src/App.tsx create mode 100644 simmadome/src/img/discord.png create mode 100644 simmadome/src/img/naturalblack.png create mode 100644 simmadome/src/index.css create mode 100644 simmadome/src/index.tsx create mode 100644 simmadome/src/react-app-env.d.ts create mode 100644 simmadome/src/reportWebVitals.ts create mode 100644 simmadome/src/setupTests.ts create mode 100644 simmadome/tsconfig.json diff --git a/simmadome/.gitignore b/simmadome/.gitignore new file mode 100644 index 0000000..00ec607 --- /dev/null +++ b/simmadome/.gitignore @@ -0,0 +1,24 @@ +# 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 +.eslintcache + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/simmadome/README.md b/simmadome/README.md new file mode 100644 index 0000000..b87cb00 --- /dev/null +++ b/simmadome/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/simmadome/package-lock.json b/simmadome/package-lock.json new file mode 100644 index 0000000..26f635d --- /dev/null +++ b/simmadome/package-lock.json @@ -0,0 +1,16464 @@ +{ + "name": "simmadome", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "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" + } + }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" + }, + "@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.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "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.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@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.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@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.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", + "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@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-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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^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.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "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-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", + "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", + "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", + "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", + "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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/plugin-transform-react-jsx": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz", + "integrity": "sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.10", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1", + "@babel/types": "^7.12.12" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.12.tgz", + "integrity": "sha512-i1AxnKxHeMxUaWVXQOSIco4tvVvvCxMSfeBMnMM06mpaJt3g+MpxYQQrDfojUQldP1xxraPSJYSMEljoWM/dCg==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.12.12" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@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.7", + "@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.7", + "@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.11", + "@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.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@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.11", + "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.10", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.10.tgz", + "integrity": "sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.10", + "@babel/plugin-transform-react-jsx-development": "^7.12.7", + "@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.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", + "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", + "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", + "requires": { + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "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==" + }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "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.19", + "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==" + } + } + }, + "@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.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==" + }, + "@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.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "requires": { + "mkdirp": "^1.0.4" + }, + "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.2", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.2.tgz", + "integrity": "sha512-Loc4UDGutcZ+Bd56hBInkm6JyjyCwWy4t2wcDXzN8EDPANgVRj0VP8Nxn0Zq2pc+WKauZwEivQgbDGg4xZO20A==", + "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==" + } + } + }, + "@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==" + } + } + }, + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "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.4.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg==", + "requires": { + "@babel/core": "^7.9.0", + "@babel/plugin-transform-react-constant-elements": "^7.9.0", + "@babel/preset-env": "^7.9.5", + "@babel/preset-react": "^7.9.4", + "@svgr/core": "^5.4.0", + "@svgr/plugin-jsx": "^5.4.0", + "@svgr/plugin-svgo": "^5.4.0", + "loader-utils": "^2.0.0" + } + }, + "@testing-library/dom": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.1.tgz", + "integrity": "sha512-6BU7vAjKuMspCy9QQEtbWgmkuXi/yOSZo3ANdvZmNQW8N/WQGjO9cvlcA5EFJaPtp2hL1RAaPGpCXxumijUxCg==", + "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.8", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.8.tgz", + "integrity": "sha512-ScyKrWQM5xNcr79PkSewnA79CLaoxVskE+f7knTOhDD9ftZSA1Jw8mj+pneqhEu3x37ncNfW84NUr7lqK+mXjA==", + "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.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.2.tgz", + "integrity": "sha512-jaxm0hwUjv+hzC+UFEywic7buDC9JQ1q3cDsrWVSDAPmLotfA6E6kUHlYm/zOeGCac6g48DR36tFHxl7Zb+N5A==", + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + } + }, + "@testing-library/user-event": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.6.0.tgz", + "integrity": "sha512-FNEH/HLmOk5GO70I52tKjs7WvGYckeE/SrnLX/ip7z2IGbffyd5zOUM1tZ10vsTphqm+VbDFI0oaXu0wcfQsAQ==", + "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.0", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz", + "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==" + }, + "@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.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==" + }, + "@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.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "requires": { + "@types/node": "*" + } + }, + "@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.19", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", + "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + }, + "@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.19.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz", + "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==" + }, + "@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.1.6", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.6.tgz", + "integrity": "sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA==" + }, + "@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": "16.14.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz", + "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==", + "requires": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "16.9.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz", + "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==", + "requires": { + "@types/react": "^16" + } + }, + "@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.11.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", + "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", + "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/webpack": { + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", + "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.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", + "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", + "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.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz", + "integrity": "sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q==", + "requires": { + "@typescript-eslint/experimental-utils": "4.12.0", + "@typescript-eslint/scope-manager": "4.12.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz", + "integrity": "sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.12.0", + "@typescript-eslint/types": "4.12.0", + "@typescript-eslint/typescript-estree": "4.12.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.12.0.tgz", + "integrity": "sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ==", + "requires": { + "@typescript-eslint/scope-manager": "4.12.0", + "@typescript-eslint/types": "4.12.0", + "@typescript-eslint/typescript-estree": "4.12.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz", + "integrity": "sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg==", + "requires": { + "@typescript-eslint/types": "4.12.0", + "@typescript-eslint/visitor-keys": "4.12.0" + } + }, + "@typescript-eslint/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.12.0.tgz", + "integrity": "sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g==" + }, + "@typescript-eslint/typescript-estree": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz", + "integrity": "sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w==", + "requires": { + "@typescript-eslint/types": "4.12.0", + "@typescript-eslint/visitor-keys": "4.12.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz", + "integrity": "sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw==", + "requires": { + "@typescript-eslint/types": "4.12.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" + } + }, + "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-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==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", + "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==" + }, + "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-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/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.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "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.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", + "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "requires": { + "caniuse-lite": "^1.0.30001173", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.634", + "escalade": "^3.1.1", + "node-releases": "^1.1.69" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "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.30001173", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz", + "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==" + }, + "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.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "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" + }, + "dependencies": { + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + } + } + }, + "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" + } + } + } + }, + "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" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "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=" + } + } + }, + "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=" + }, + "core-js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz", + "integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==" + }, + "core-js-compat": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz", + "integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==", + "requires": { + "browserslist": "^4.16.0", + "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.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.2.tgz", + "integrity": "sha512-v6zfIQqL/pzTVAbZvYUozsxNfxcFb6Ks3ZfEbuneJl3FW9Jb8F6vLWB6f+qTmAu72msUdyb84V8d/yBFf7FNnw==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + }, + "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" + } + }, + "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-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.634", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz", + "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==" + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.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==" + } + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "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.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "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-negative-zero": "^2.0.0", + "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" + } + }, + "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.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", + "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "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.2.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.19", + "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": { + "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.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.0.tgz", + "integrity": "sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug==" + } + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.4.1.tgz", + "integrity": "sha512-cj8iPWZKuAiVD8MMgTSunyMCAvxQxp5mxoPHZl1UMGkApFXaXJHdCFcCR+oZEJbBNhReNa5SjESIn34uqUbBtg==", + "requires": { + "@types/eslint": "^7.2.4", + "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.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "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" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" + } + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "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.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "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.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + }, + "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" + } + }, + "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.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.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.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "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.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "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.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" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "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==" + }, + "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" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + }, + "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" + } + } + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "requires": { + "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" + } + } + } + }, + "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=" + }, + "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.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "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" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "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" + } + }, + "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==" + }, + "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._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-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" + } + } + } + }, + "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" + } + }, + "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.69", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz", + "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==" + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", + "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", + "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.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "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.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.2.tgz", + "integrity": "sha512-HM1NDNWLgglJPQQMNwvLxgH2KcrKZklKLi/xXYIOaqQB57p/pDWEJNS83PVICYsn1Dg/9C26TiejNr422/ePaQ==", + "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==" + }, + "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==" + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.1.tgz", + "integrity": "sha512-rlgpCupaW6qQqvu0hvv2FDv40QG427fjghV56XyPcP5aKtOAPzNAhQ7bHqk1YdS2vpW1W7aSV3JobedxuPlBAA==", + "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.8", + "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==" + }, + "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.8", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz", + "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==" + }, + "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-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-scripts": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.1.tgz", + "integrity": "sha512-NnniMSC/wjwhcJAyPJCWtxx6CWONqgvGgV9+QXj1bwoW/JI++YF1eEf3Upf/mQ9KmP57IBdjzWs1XvnPq7qMTQ==", + "requires": { + "@babel/core": "7.12.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.4.2", + "@svgr/webpack": "5.4.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.1", + "react-refresh": "^0.8.3", + "resolve": "1.18.1", + "resolve-url-loader": "^3.1.2", + "sass-loader": "8.0.2", + "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.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "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" + } + } + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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=" + }, + "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-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.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==" + }, + "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": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "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.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "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-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.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "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.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "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.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "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=" + }, + "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" + } + }, + "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.18.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.18.0.tgz", + "integrity": "sha512-D9Tu8nE3E7D1Bsf/V29oMHceMf+gnVO+pDguk/A5YRo1cLpkiQ48ZnbbS57pvvHeY+OIeNQx1vf4ASPlEtRpcA==", + "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.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==" + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "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.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "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==", + "optional": true + }, + "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" + } + }, + "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" + } + }, + "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": "0.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.4.tgz", + "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==" + }, + "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.4.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", + "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==" + } + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" + }, + "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/simmadome/package.json b/simmadome/package.json new file mode 100644 index 0000000..758d38f --- /dev/null +++ b/simmadome/package.json @@ -0,0 +1,44 @@ +{ + "name": "simmadome", + "version": "0.1.0", + "private": true, + "proxy": "http://localhost:5000", + "dependencies": { + "@testing-library/jest-dom": "^5.11.8", + "@testing-library/react": "^11.2.2", + "@testing-library/user-event": "^12.6.0", + "@types/jest": "^26.0.19", + "@types/node": "^12.19.12", + "@types/react": "^16.14.2", + "@types/react-dom": "^16.9.10", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "react-scripts": "4.0.1", + "typescript": "^4.1.3", + "web-vitals": "^0.2.4" + }, + "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" + ] + } +} diff --git a/simmadome/public/favicon.ico b/simmadome/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/simmadome/public/index.html b/simmadome/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/simmadome/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/simmadome/public/logo192.png b/simmadome/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/simmadome/public/manifest.json b/simmadome/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/simmadome/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "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/simmadome/public/robots.txt b/simmadome/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/simmadome/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/simmadome/src/App.css b/simmadome/src/App.css new file mode 100644 index 0000000..d8d9e02 --- /dev/null +++ b/simmadome/src/App.css @@ -0,0 +1,80 @@ +.container { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(32rem, 1fr)); + grid-gap: 50px 30px; /*space between rows, then columns*/ + grid-auto-flow: row; +} + +.emptyslot, .game { + min-height: 18.75rem; + justify-self: center; + max-width: 44rem; +} + +#filters { + display: flex; + justify-content: center; + width: 100%; + align-items: center; + margin-top: 10px; + margin-bottom: 20px; +} + +#filters > * { + padding: 0.25rem 0.5rem; + margin: 0rem 0.5rem; + font-size: 16pt; + background: rgba(0,0,0,0); +} + +#filters > .filter { + border-radius: 0.5rem; + min-width: 6.25rem; + text-align: center; + border: none; + color: white; + text-decoration: none; +} + +#selected_filter { + background: rgb(113, 54, 138); +} + +#footer { + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; + height: 4.5rem; +} + +#footer > div { + text-align: center; + font-size: 16pt; + position: relative; + top: 0.25rem; +} + +.emptyslot { + border: 2px dashed white; + border-radius: 15px; + align-self: stretch; + justify-self: stretch; + text-align: center; + color: white; +} + +@media only screen and (max-device-width: 800px) { + .container { + display: grid; + grid-template-columns: repeat(1, minmax(700px, 90%)); + position: absolute; + left: 50%; + transform: translate(-50%, 0); + } + + .emptyslot { + border: none; + min-height: 0px; + } +} diff --git a/simmadome/src/App.tsx b/simmadome/src/App.tsx new file mode 100644 index 0000000..0ddc86c --- /dev/null +++ b/simmadome/src/App.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import './App.css'; + +class App extends React.Component { + render() { + return ( +
+ + +
+
+ ); + } +} + +class Filters extends React.Component { + render() { + return ( +
+
Filter:
+ +
+ ); + } +} + +function Grid() { + return ( +
+
+
+ ); +} + +function Footer() { + return ( + + ); +} + +export default App; diff --git a/simmadome/src/img/discord.png b/simmadome/src/img/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..49dde81caf2a4540b8a55358784bbccc007c2b58 GIT binary patch literal 9103 zcmb7pWlS7Ux9#BW4#nN2=wQX&DLNF_!C`QU6?bVV6fI6+a4%LUE(KZ!XK)#`xW9hM zeR;{f@5g&5Ston%teumbA3N);6R)eSf`?6w4FCY})KnGq0RUv!zjzoE<=?(TmAVQ5 zkTeAun)vEl`!jfYdpJ0|+B5hDdfGGC2RJ(b00B$2InLg865bzPwn%}<*MO9$Kbm5{ z&aWggYRbACf6tZMcxgEFU?>LMM*8lBJwJ55Y+AOGTky@h)cv{OzggLW$L`9$+&@r< zytiEMb(487eZRcrz6eWXB4F*Qn649*Ss#F(|Ghw4zrnn?8Mb)1*KoC@z?S8Ed}duW zl|8kj7~ML*2pF-XINZBXIG%iOaroHz>pp1Hd<^FJ+)y(u_H^<-xUX`SZ-wJ$fWGQ; zs9Paf>GU2veFTvsCkb<<0}-^LX7vi)rG1bXSb^$L+@ek%TC zIqm;=mK}zG_PG zbQBiYoCxL>r>cs4>QM7@akFfL$A(X5C(G+kMoue%7zNZQ6b8#LJFyS`VUId8E8QBb z*aQt%e-a={8@cwCKKElyPO9yeq1<(S>-3h#H@yH2-AO4edv{mQ+q;fIo(=ZaS%lAK zVDxDr5%$zI49$e_hL4Ah1qkO3ClCopoRKd|Nk+#rqBBUz#Q&hb>5wj1VOY|%@bzR8 z%=3M3h#35Pz>_4Iql&FWOd2ouqYskoCmKp>){h|ds-NmUW!ZWLlP$l^Y7@3&SjUZO za!s4uOUgc(JGYpEYujdQbv&&OTFgDVZv?;6tT=hr_FrJ6PKeJvEhZ8;gM2hT6(j~Tn7(n+!KzPbwjtApj`F zvp^x?IG$|KO_NX9HxFoY@1M5YFvwID`vuDjAc3edUjBTVH5rv%J5MX;~edV;p;@fZplINRkE?i%ID9*Ff{ZeaHVmESm z+2MU-zx(y=pAi)HwtSaU)*~|RT7_<$$>!J7JSR2pQdYT%T7v_wa>6SLz73<_%Gp$n z^ZVC5__|-eBbi$8Y||2}#9?h2gzlRbgh$Iv5$F_d_)`U`akuLH)}d$z0esofoMpQG zX#IaTs!w~<37%+1X|Gme8h;OOD6seCHt)pyWf(E0ye>77Y|!2CYjOvD#3kHaOFfY& zyl~-715ri(>*9QpW!%>{K|?tb6Uz%UARk+IV;^A?4gUshS^edTOWixV`?cDLdE%gn zr@lVn0+HEonr$~0fBJqWjpOUgb3M9@(gvJEUk{YU;W{q9?=u)8aL()07F{BmwZUD$ z0;rmQRI6~Fd3}nwa9drKuN^OKG9E9`^3ip18173bzvZ58`79HTPx(DY(Og(}{J2so z6gy>z?uzRcE7CvtVQy1TGPgsNzo#W8UB~gvRXe7O*UG~3MR&wdS!dVCMa0$?{wG2F>apFn}>FAei5GPs9u!1k7sXfx{DYw z_&imiM549GIrY53dsi&bSC+RxU+-N8Ja&Xk&9Y9f;#1RfTPdf+5f@PR4|cwvpU2>^ z4;1FORAk?CG1GHPoo;-8ZCw@-263*r(8 z6cpM@iiC|sZ{SXDywBk<$A~NZFkdF^SW&q-6v)6(M1Sjt$n7$=3cL^cIM!+MIUL)m zBma~u_{jbTC}RS?`gi+FAcs`)D2b`e8KM|hy#7sj=9O4Ako$XWO6QP%#uah4qr0?- z>9L*iX53II%flEQ8H=^9y5Z#XqL8A2`^tz>dp)X%JPp6SO^W*8LUu`zMYK^mgUOdu~Kog##BdC?tMbY zCAO0%u!?o_0foOr6&3S7`zD?iZGL^={W17OL*@N?w7nrFe5$+jaON9-?Ub?iQvXn} zuM<*U?~SeP!Y7%zzuq}Le9y=gB)T@AIggRj{@nO^4t+eBysVs|9!j=3m6=E4bHdmj zt&u}qQw=RF5qUPz6Vc73)fKVI?tcoV!tarb+o7!tk=!#xI8=C zJQw6n)c!RNqLEG@+?vea3|Fssmn_^h?5kOti{xS5YVwP$wSi3t#XIn4J7>`fWAS?h z>XzCaZy23f6`~aG9=OC8;{Az3_VClZMK`iYl^T^Po70mn%pV`vShke6EwKTl8&1+8CU_|&${zO0y?{pw9lKXN3B0l2~ z+ExZW&~J}&Dt?os_H_%(#y%bO#)f39hy^2Y zQ_=+laq%>aXcm@?{O&_sj}Xy);LgH{tZ%`|mD-qMas3*BDI=s)P5D{oFBG)><=(Vr zix?&Y#}SJZC;W|>iqdq7^hZ&W=XkuDU0H5u>DP7r1E+w*d>c|A7rr@M=FEYF2lbK2 zJFlW9kW8?Zvx|NyrhM^R-Gyp*!+DL5F$bx>wO^pr>+o&o<^2eMLQY{^B<^kYUXhy% z`K54VeaEvCpNX{Hg}tODRUn5K#X2;??7rIBx8Q)ShvwOyVufd?2$@ib6JY$y3apIs znujy|qJ8((Y=|g}jAiutV$w3CSb;HE3g>Htufbh+E6)dBw@MFe6jNQ4v_Jj4qNMrq zXVoh?CiuqVR;t8-dZ=mdd2(aj6x=<*k$3XRk7m+NsDlfu+)SE01={hH{7^zZWyFzq zv@we~uA=r33Gj=dtBoH{b_|XXInLZ)>LnTf^M;aF9!{s;XD6>wwzMhBdUGtkx{BV7 zSeEy12^(@6lAREV9sCsZnAwrSsPz<)IaK@Up^;?FbB|_UR4vZ;mF+j+Ei$e$@fM2B zj!4eRV3|_s6(QZ~CC2faLXxlcgv<^5Ww=Nof8tXqGgpm&BJE3P@SaCHTM)C1#SUAo zoGms-@G5Ickqg6*Dvf3>axhuEo1`zk%&?11aadN^;tV2N=$(^467);FLgI1o&BYBx%d~jVuQzt%g0W&s27EbH#&oN8#TUc%TEZ_QdSz1{KFI8o& z8)Nw&=W9)9H;+AFVInF2;~s8EZywa_L5rMmi=$6NXXgsti!4r|gI=%ZQKUcLOeo-~-cm9~tP zSV~CB1sgGJ13aFr-u_^-s5d>eB>>W3NadXnuC=@#AZ`&oMB$giB{A@evGIqj4Yn#b z%m+;OSjHdk(ol^c8$aJ{<6zTSm>$Y=1%ybDtk~|K)x?p8`*c- z$@v1>ZBU`nHu%npv5U*l;1f@jM%lAPdT8s(8x%L0W5D~zeq>whEf%wPC~MEbC`MIo z?|weDFx?wd33GN)>R4?{z?nY2cnjQ*uo&`MZ{`*01@e1^8OB)nP>)N0Aa9Z4l-Q`CqOK;LX6t7 znWOd0+5_vD0!B~-H~2SFx}w`00rOkCgFc8HyA0~o%4gR6VNuL*a|TKVfZALGi4fJh z&UsGqhW7^cS*r@O0fsU8YX4 z;)~*hfGq~euc~sKn3L_ji5AwaaWc15-zBq8D7N8@nnZ`SOOGDYM{3h^KB_H@OVxknGTOpfD>)M`-?W@`sB7y`yaSpj=Y7V~M=R+-CvzM(vVGUoy)QHR zWb$U|tD8S#)+}$n@0L2QAIiB&Vp&t>#D}1uHV3AUg*$pITuCJkEa!`qLy1WxogieC zaR}U>8pwEdGS1L+&^)gQ|BW+n)?SDgM-%%>)^ze9PFaKw&5pd38yf#^IF6|FQz_c6 zI@RmZZatnK#}qB5F~c+7S$4T|USLZm)E`-=BUMvYY-X64qY%C(K+G|r*JM<4Vh z0f_pH3Na&loxD;9Dup}}6tIoI zjWTLA#~yKTCM^FWY0RW^de@$Tq&d`QRm-!{AvldS29D%SfuW!|e0<1Bc^l$ol2OE5 zv4ll!_zp>`CnqX|Lebyk8))h2d!o+b&zXca*W6Fo>Z}&A?yjh`QMA@PyR_{dAQ`So z+lI*F0Y}aJcZ@puT(4>0Xu$jHh$(W!9;*^@@vn2)*f%(^Fn^npCVJW5faqYEzJn=& ze;eC@)w4+SEJZhqMgs!C@1?GviBS~St0(1spFYQvK^!1r@-i7~g>@V&dX{xr;n|Tu zA@agG`w1Qs2@IL*iE)>KAYN4O?vJt924cwdQ!Lo2d+7PS2EOVv4Ii>HHaA?<#L6#3 z?3y_CAjs`(9Q(~SDj_&7ks?256Unlt#EA|i-i>9t6U^fz7m){9+MW@(3|~{Dmt%94 zQbrhfWH8F3aTB(ATN`u^p}oON3r1PrW=oS6_2ZoQ-n`rQNY#m9#~4)p24l;pM`}iq zuHlhX;=rmV1fS+pl8X1T?Zb(qCQY6%L>Xd+cZ%xQIvrS}XAkTaISOJS>9^DCIQ|L6 zr{a|uxx<1xk?~2^P6y*p%3xFhLv1Z+B;&3=dSE$Gymu8d&EJGLnXXvZIGS-W{Xom# z8VXdl%-TI*<+?R`#I5CfY-m0*EWb82bA9j*ITrVsUhxr`1`sWG{;2@%{(VLF7Ht6AZf zI1zM`lng4+Od(d#ukW>F_%1xeoeM#@rr4&qO=+83B9hU81xg5kH5I_lJ?(wJ<| zr+l+d0~ScxtE(@_6lnMU@2x_@005*9&I$^;Y6=Sf+rIl}+U13&OREmNdG*uMpp1zO zLozN7wMLsqpJx6_}VNS~}B$(Q^vYyuPOij1rNw6zg!<3fK&G>C~z8LeYeUZBeF0GH@F z+1Nr@d~ggbeDJyC49rB5Nf#gU9bj5xC|GUwoq8B#G|C{|^x4FU;!}Mbfh_KbO)15q z6;KHYRRwMmHkce)bwrtt>c%_94J1_S^`t>eH@^Qgt^I9+D0qzS|K6Ih3!JnbZ1{kh zLC9DVBg9otSp1gxr((jjE!{KYa3M>!CRB)0f?PKmd-Oc&rT^4@^2cS?7t$o8RsPl| zL3C8V2#3|y-c+})K;+xP2=3bBI??bBomqq%ZwTt82MPtuO=}H>&p*7M-9m^(nBJ3Pg(WcMz7`SFPS z&s7!G)ihK>{TBcLFaMvb%+qD#UmKFIzP172&F;cK0~UZ}qoJY*h(n`Q{g+^Qs+#%$ z05~N70TLiLkMds;!&gm931b_V4uhG1-d+CapVb?srYL6^uymZi;l9m<8=a0uOpKXz z6SmlOeC#KgkF_wwh~+bNI>ep%|guO-(`C; zIIU{ccMDTA{77N!<(7{dOsdf1zw&&@ym42ptnFB4+*op4$efDH(jS88o6X4oa<*e{ za<9gKBb$n@euyB8HruqXiMocTt(VrDNERo&h|F z4fflZ2xMVlX;#_&5(Fu<(zV#S8Oxf|4+$K#<}#Y(0-L6EEQ#ERf^hH`j%M!`AM0LP zMs>D+iEm)JCFAr)JBjh1X#Nou@J2`OX?fM(atU8>or0Vec|C_N_V`rVH15-_;IsQ# z3yQSEF8W$#k>sHg!+RGayCBW>PO((MJc>X99S?<%crCf{&+nf#yVm zIXi;3z1D|C^ubZJ{Q~Yg4}k8HE#PQJxkev}Ya7a21fKFREQ0;6Piia-5D{b*M>JhV-Ba&CEh9$+rcZa!%)bSv*-w8UlI5;sO-PlwYq# zAhgCHo5DMDMpS-kdU7@maG;5g+p6Bzk+EXgz(jv|CuWDk{ds!WMOkVgi(hPM>bePQ z4gnOV7dbdqypj7t?daXT=t*lHTwT)a)#ER4yD~k$s1~|mj6eC>k0yAm|A(0`F>Lh3 zu*_<>#qm!jeKOYaE{tvW{_&b1(NPJ$Hh)S%Nh#C%Ej6bQ`{;2pYAH%RpO`}nrBwvR zq848rhhVxxere2FcBVe8ZFMX!<{8JMQXa(uVmkr?TC;NtOUzpujXSYn$+xOZ(D*jo z^XYt+qrdriJAs8!n24eEU_4lI3b8P#?NICWW~tk~WE3J4gVM8`o}pAWiEFZ#d_uO# zmynef_T3MHJWSw2i@&#I5rc%Fdlg#_Dj$pF4nAAZ z9u+7S$IBvR3%DK+7TR5^V*kn%e09d*+`TIv5BBJT2xAjFdLN&Tide*h{X?PM{hbqR zt9xCfFke>a_$%m~8A!6^55O~&6y{U!eu4lcg6EOG!-I&Rt2QA2p+eoq2QN1e0o7)% zgBR`mX720fQe^1#W)S&&UcyLz`|gPz=8juC)MK>8JPF)CO?(mTNy|3~L5HbB?ajBh z?m-k&M%ktySRg2yc{oL?5WI0Z;_L-wMs#hlK=ZqF`&v&#hP`>8wMc3wAlu5?p3+kM z(x1V1{G(5eAod;uN6*!7e?w_W)1+)U8@leqX_rSIU7=*d8#}D+&sPsa>OvJUTOHRR zed5@8pvgfK9bw9@**W5{9vP+}eMh#i3&IiK=4sn*P#g?8-t&YG_rEIu&+~+F!O}0< zcIaI?K~aeDV~oAv(ni#>yh7D|9}{)Nu~19l1F8(utqm> zs4*6;@Zx2a{Eh)zT@Q+}ZNHX>I%k1%TPkJq!PcXvyzLHo%;fkROOv}xI?FZ03#XQWPSR4%VMn_^Z_ZJhGz$zvpHj z^_UiU5SX)>f@Cm_U>#m@fnMTKE4-dY{otBzMmuJ|3}|m z3Es>Di@})X==g;8Wuj_{E8Q#`vDzrwE|ZMFsK*)b=wFRQEQEE^!txD7rnZ4}nX$je zeV$IoQP?fx4~_H3A&tAh@m)^iji4jY&DLsrm`c2yX)U21!NUEX$CxTb-uRWn1mu_N z_3XxHzr-eNXd5H6TTet$YWA*UXLH%p;@`c~8jBY0+N&MD@90m2aXeDOl9!BtS!ABP z!Dy_o;>@??crbIxNF~~`8qbm5-t^#Ms9XEVnvcrq=#|4bWZ#Wp|AX+T30(mUVz>IS z$%%9k)TOYOVvPdZQj5E!J1}0q@TSg?)FEN1I;LO7$>u~J$2!ig8}67D(@N}sf_*I7 zcQ|+M7}IIVz}a={AO9?<*=Dk=@@lgCj*MbV{+oK>My_{XY9pTS_D2XTOF*yrtsG@R zp=$;rwgIacf*CliZeA{)8Vc6)L;cjArHjHm2NDWr28@vmn;vKwNQ+OSk zXGW1zxU}e_7M5iiEEt3c-+5`e1U?Lu#DUwqVrgDO^Hac%`sMM#wAYOw3PG3`+&L$G zUtQ8}iD%mmM6q#QvT=iB29>1-;u&n23WJihCY|BCaGm`aT>@jgG-yfAV zV}TI}nUA!7D8tESG6&8ox15g*Jw0Fd_nL=^ej82Wf)?&lDh3NbsJWal4+_<2LG zqTbh!1EVYm0#~1h_KQ+Gm_ zk)EgA2N`d>i|hE{FjnebA?3RN3K})%Rcoi3{k1{spg%=>5`w6jNdi}q$&%WcN@&e= zJv#kkc-PvfO5Rv~!HzMxIQ7`>DcAZ`TI20(9xQxV*xzE;Q5e%1+Eg#=EB;+6h1XP> z*%U6cVb+$VB-&MnPIHe6RT_U9xQVd8B7diLuNw8+soh;dg3>d;MN5giDMx@@rrd|t z&gmDtetq#v+R#HuqsR!J&vAh6lBTmgQBjJci)p>wV+iyc&0a1&txp)qj{sl^)}kCR zCha$xR}x|)IECKG%22~a3Gd1kszB-^hth`b^M&_SUrrM%xRqwg1y?Gt4%?f8GQQkhKlRN zV%+AdNKId;N0(9sL8FnWE^Qa)-dZz=5;kWBu7qjMLsE-y(c#ZYh^13`*V06a-uXz7 zrNYN|6~5I4_mY_!df>x5qqKC2uE@TtkUM^h$}|B}=Hj}rQS(*7gRBf$R$ z-Rv+VkOKD*7z4@}Jad7Sip}n$MO?qZx6en_N)nFeAqU#g@SN=GBUy_)$%t1(TJR+I&DPw0h-t%w7DxAy zf5!l!t)jd32lpAIsXFpa+sQ0=lCl_lSMEE}wAo-+ij7-g@Hka{faV09t$lpm9UyEy9Hs zlPSTe&Gd*s3L4lTh4HB5`S4GA0NAgDv43T1S7Ef~45s!Na&#IzBwn`vYF6r3W`2X< i{Leu|xd5Ae*-*q*(4sD5&A%5KKut+o5h`yL`M&`9&8Aua literal 0 HcmV?d00001 diff --git a/simmadome/src/img/naturalblack.png b/simmadome/src/img/naturalblack.png new file mode 100644 index 0000000000000000000000000000000000000000..e600af5848041842f5055e1ba8da0f12e0f1b64d GIT binary patch literal 261640 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 literal 0 HcmV?d00001 diff --git a/simmadome/src/index.css b/simmadome/src/index.css new file mode 100644 index 0000000..922dcd5 --- /dev/null +++ b/simmadome/src/index.css @@ -0,0 +1,69 @@ +@import url('https://fonts.googleapis.com/css2?family=Alegreya&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Goldman:wght@700&display=swap'); +body { + background-image: url("img/naturalblack.png"); +} +/* Background pattern from Toptal Subtle Patterns */ + +div, button, h1, h2, a { + font-family: 'Alegreya', serif; + color: white; +} + +h2 { + text-align: center; +} + +.link{ + position: relative; + top: 10px; +} + +.h1 { + margin: auto; + width: 45%; + color: white; +} + +.page_header { + color: white; + font-family: 'Goldman', cursive; + text-decoration: none; +} + +#header { + width: 100%; + height: max-content; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +#header .page_header { + margin: auto; +} + +#link_div { + text-align: right; + position: absolute; + top: 0px; + right: 30px; +} + +#link_div > a { + background-color: transparent; + text-decoration: underline; +} + +#link_div > a:link, #link_div > a:visited { + color: lightblue; +} + +#link_div > a:hover { + color: white; +} + +img.emoji { + height: 14px; +} \ No newline at end of file diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx new file mode 100644 index 0000000..eaffa81 --- /dev/null +++ b/simmadome/src/index.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import discordlogo from "./img/discord.png"; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + +
+ + , + document.getElementById('root') +); + + +function Header() { + return ( + + ); +} + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/simmadome/src/react-app-env.d.ts b/simmadome/src/react-app-env.d.ts new file mode 100644 index 0000000..6431bc5 --- /dev/null +++ b/simmadome/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/simmadome/src/reportWebVitals.ts b/simmadome/src/reportWebVitals.ts new file mode 100644 index 0000000..49a2a16 --- /dev/null +++ b/simmadome/src/reportWebVitals.ts @@ -0,0 +1,15 @@ +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/simmadome/src/setupTests.ts b/simmadome/src/setupTests.ts new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/simmadome/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/simmadome/tsconfig.json b/simmadome/tsconfig.json new file mode 100644 index 0000000..a273b0c --- /dev/null +++ b/simmadome/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/templates/base.html b/templates/base.html index da90c9e..ae570d1 100644 --- a/templates/base.html +++ b/templates/base.html @@ -17,15 +17,7 @@ - + {% block body %}{% endblock %} From 486ba1f2004fcbd40135e7db3a1828213ce69af3 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Thu, 7 Jan 2021 03:10:53 -0500 Subject: [PATCH 02/78] it works! (feature parity coming soon:tm:) --- main_controller.py | 46 ++--- simmadome/package-lock.json | 94 +++++++++ simmadome/package.json | 2 + simmadome/src/App.tsx | 153 +++++++++++++-- static/css/game.css => simmadome/src/Game.css | 3 +- simmadome/src/Game.tsx | 75 ++++++++ {static => simmadome/src}/img/base_empty.png | Bin {static => simmadome/src}/img/base_filled.png | Bin {static => simmadome/src}/img/out_in.png | Bin {static => simmadome/src}/img/out_out.png | Bin simmadome/src/index.tsx | 4 +- static/.DS_Store | Bin 6148 -> 0 bytes static/css/common.css | 69 ------- static/css/game_page.css | 7 - static/css/games_page.css | 80 -------- static/css/naturalblack.png | Bin 261640 -> 0 bytes static/css/prism.png | Bin 9697 -> 0 bytes static/discord.png | Bin 9103 -> 0 bytes static/js/.DS_Store | Bin 6148 -> 0 bytes static/js/game_loader.js | 25 --- static/js/grid_loader.js | 178 ------------------ templates/.DS_Store | Bin 6148 -> 0 bytes templates/base.html | 23 --- templates/game.html | 11 -- templates/game_box.html | 53 ------ templates/index.html | 21 --- 26 files changed, 326 insertions(+), 518 deletions(-) rename static/css/game.css => simmadome/src/Game.css (99%) create mode 100644 simmadome/src/Game.tsx rename {static => simmadome/src}/img/base_empty.png (100%) rename {static => simmadome/src}/img/base_filled.png (100%) rename {static => simmadome/src}/img/out_in.png (100%) rename {static => simmadome/src}/img/out_out.png (100%) delete mode 100644 static/.DS_Store delete mode 100644 static/css/common.css delete mode 100644 static/css/game_page.css delete mode 100644 static/css/games_page.css delete mode 100644 static/css/naturalblack.png delete mode 100644 static/css/prism.png delete mode 100644 static/discord.png delete mode 100644 static/js/.DS_Store delete mode 100644 static/js/game_loader.js delete mode 100644 static/js/grid_loader.js delete mode 100644 templates/.DS_Store delete mode 100644 templates/base.html delete mode 100644 templates/game.html delete mode 100644 templates/game_box.html delete mode 100644 templates/index.html diff --git a/main_controller.py b/main_controller.py index c26de70..707c9f7 100644 --- a/main_controller.py +++ b/main_controller.py @@ -1,36 +1,36 @@ -import asyncio, time, datetime, games, json, threading, jinja2, leagues -from flask import Flask, url_for, Response, render_template, request, jsonify +import asyncio, time, datetime, games, json, threading, jinja2, leagues, os +from flask import Flask, url_for, Response, render_template, request, jsonify, send_from_directory from flask_socketio import SocketIO, emit -app = Flask("the-prestige") +app = Flask("the-prestige", static_folder='simmadome/build') app.config['SECRET KEY'] = 'dev' #app.config['SERVER_NAME'] = '0.0.0.0:5000' socketio = SocketIO(app) -@app.route('/') -def index(): - if ('league' in request.args): - return render_template("index.html", league=request.args['league']) - return render_template("index.html") - -@app.route('/game') -def game_page(): - return render_template("game.html") +# Serve React App +@app.route('/', defaults={'path': ''}) +@app.route('/') +def serve(path): + if path != "" and os.path.exists(app.static_folder + '/' + path): + return send_from_directory(app.static_folder, path) + else: + return send_from_directory(app.static_folder, 'index.html') thread2 = threading.Thread(target=socketio.run,args=(app,'0.0.0.0')) thread2.start() master_games_dic = {} #key timestamp : (game game, {} state) -data_to_send = [] +game_states = [] @socketio.on("recieved") def handle_new_conn(data): - socketio.emit("states_update", data_to_send, room=request.sid) + socketio.emit("states_update", game_states, room=request.sid) def update_loop(): + global game_states while True: - game_states = {} + game_states = [] game_ids = iter(master_games_dic.copy().keys()) for game_id in game_ids: this_game, state, discrim_string = master_games_dic[game_id] @@ -125,7 +125,7 @@ def update_loop(): state["top_of_inning"] = this_game.top_of_inning - game_states[game_id] = state + game_states.append([game_id, state]) if state["update_pause"] <= 1 and state["start_delay"] < 0: if this_game.over: @@ -140,17 +140,5 @@ def update_loop(): state["update_pause"] -= 1 - global data_to_send - data_to_send = [] - template = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')).get_template('game_box.html') - - for id in game_states: - data_to_send.append({ - 'timestamp' : id, - 'league' : game_states[id]['leagueoruser'] if game_states[id]['is_league'] else '', - 'state' : game_states[id], - 'html' : template.render(state=game_states[id], timestamp=id) - }) - - socketio.emit("states_update", data_to_send) + socketio.emit("states_update", game_states) time.sleep(8) diff --git a/simmadome/package-lock.json b/simmadome/package-lock.json index 26f635d..25e47fa 100644 --- a/simmadome/package-lock.json +++ b/simmadome/package-lock.json @@ -2178,6 +2178,11 @@ "@babel/types": "^7.3.0" } }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" + }, "@types/eslint": { "version": "7.2.6", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", @@ -2314,6 +2319,11 @@ "@types/node": "*" } }, + "@types/socket.io-client": { + "version": "1.4.34", + "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==" + }, "@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -3417,6 +3427,11 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -3472,6 +3487,11 @@ } } }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5256,6 +5276,31 @@ "once": "^1.4.0" } }, + "engine.io-client": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.0.6.tgz", + "integrity": "sha512-5lPh8rrhxIruo5ZlgFt31KM626o5OCXrCHBweieWWuVicDtnYdz/iR93k6N9k0Xs61WrYxZKIWXzeSaJF6fpNA==", + "requires": { + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, "enhanced-resolve": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", @@ -6937,6 +6982,11 @@ "function-bind": "^1.1.1" } }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -10694,6 +10744,16 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -13625,6 +13685,30 @@ } } }, + "socket.io-client": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.0.5.tgz", + "integrity": "sha512-NNnv3UH5h+aICeVDAdSHll3vSujp1OnzvDtuVz1ukUXliffr1+LTGc1W+qZAm3H7McapGsJhTI5nsBoY1r21dQ==", + "requires": { + "@types/component-emitter": "^1.2.10", + "backo2": "~1.0.2", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-client": "~4.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~4.0.3" + } + }, + "socket.io-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.3.tgz", + "integrity": "sha512-m4ybFiP4UYVORRt7jcdqf8UWx+ywVdAqqsJyruXxAdD3Sv6MDemijWij34mOWdMJ55bEdIb9jACBhxUgNK6sxw==", + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } + }, "sockjs": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", @@ -16401,6 +16485,11 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -16455,6 +16544,11 @@ } } }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/simmadome/package.json b/simmadome/package.json index 758d38f..2d10414 100644 --- a/simmadome/package.json +++ b/simmadome/package.json @@ -11,9 +11,11 @@ "@types/node": "^12.19.12", "@types/react": "^16.14.2", "@types/react-dom": "^16.9.10", + "@types/socket.io-client": "^1.4.34", "react": "^17.0.1", "react-dom": "^17.0.1", "react-scripts": "4.0.1", + "socket.io-client": "^3.0.5", "typescript": "^4.1.3", "web-vitals": "^0.2.4" }, diff --git a/simmadome/src/App.tsx b/simmadome/src/App.tsx index 0ddc86c..20fd97b 100644 --- a/simmadome/src/App.tsx +++ b/simmadome/src/App.tsx @@ -1,43 +1,160 @@ import React from 'react'; +import io from 'socket.io-client'; import './App.css'; +import Game from './Game'; + +interface GameState { + bases: (string | null)[]; + outs: number; + display_top_of_inning: boolean + display_inning: number + max_innings: number + title: string + weather_emoji: string + weather_text: string + away_name: string + away_score: number + home_name: string + home_score: number + pitcher: string + batter: string + update_emoji: string + update_text: string + is_league: boolean + leagueoruser: string +} + +type GameList = ([id: string, game: GameState] | null)[]; + +interface AppProps { + filter: string | null + gameId: string | null +} + +interface AppState { + filter: string + games: [string, GameState][] +} + +class App extends React.Component { + gameList: GameList; + + constructor(props: AppProps) { + super(props); + + let socket = io(); + socket.on('connect', () => socket.emit('recieved', {})); + socket.on('states_update', (update: [string, GameState][]) => this.onStatesUpdate(update)); + + this.gameList = []; + this.state = { + filter: props.filter ?? "", + games: [] + }; + this.onSelectNewFilter = this.onSelectNewFilter.bind(this); + } + + onStatesUpdate(newStates: [string, GameState][]) { + console.log(newStates); + this.setState({ games: newStates }); + } + + onSelectNewFilter(newFilter: string) { + this.setState({ filter: newFilter }); + this.gameList = []; + } + + updateGameList() { + let filterGames = this.state.games.filter((game, i) => this.state.filter === "" || game[1].leagueoruser === this.state.filter) + + //remove games no longer present, update games with new info + for (let i = 0; i < this.gameList.length; i ++) { + if (this.gameList[i] !== null) { + let newState = filterGames.find((val) => val[0] === this.gameList[i]![0]); + if (newState !== undefined) { + this.gameList[i] = newState; + } else { + this.gameList[i] = null; + } + } + } + + // add games not present + for (let game of filterGames) { + if (!this.gameList.find((val) => val !== null && val[0] === game[0])) { + let firstEmpty = this.gameList.indexOf(null); + if (firstEmpty < 0) { + this.gameList.push(game) + } else { + this.gameList[firstEmpty] = game; + } + } + } + + //remove trailing empty cells + while (this.gameList[this.gameList.length-1] === null) { + this.gameList.pop(); + } + } -class App extends React.Component { render() { + this.updateGameList(); + + let filters: string[] = []; + this.state.games.forEach((game, id) => { if (game[1].is_league && !filters.includes(game[1].leagueoruser)) { filters.push(game[1].leagueoruser) }}); return (
- - -
+ + +
0}/>
); } } -class Filters extends React.Component { - render() { - return ( -
-
Filter:
- -
- ); - } -} +function Filters (props: {filterList: string[], selectedFilter: string, onSelectNewFilter: (newFilter: string) => void}) { + let filters = props.filterList.map((filter: string) => + + ) -function Grid() { return ( +
+
Filter:
+ + {filters} +
+ ); +} + + +function Grid(props: { gameList: GameList }) { + return (
-
+ {props.gameList.map((game) => {if (game) { + return + } else { + return
+ }})}
); } -function Footer() { +function Footer(props: { has_games: boolean }) { + let text = props.has_games ? "" : "No games right now. Why not head over to Discord and start one?"; return ( ); } export default App; +export type { GameState }; \ No newline at end of file diff --git a/static/css/game.css b/simmadome/src/Game.css similarity index 99% rename from static/css/game.css rename to simmadome/src/Game.css index c60f230..59ae0c5 100644 --- a/static/css/game.css +++ b/simmadome/src/Game.css @@ -1,4 +1,3 @@ - :root { --background-main: #2f3136; /*discord dark theme background-secondary - the same color as the embeds*/ --background-secondary: #4f545c; /*discord's background-tertiary*/ @@ -193,7 +192,7 @@ height: 60px; } -.base_2 { +.field > .base { margin-bottom: -25% } diff --git a/simmadome/src/Game.tsx b/simmadome/src/Game.tsx new file mode 100644 index 0000000..f96fcd8 --- /dev/null +++ b/simmadome/src/Game.tsx @@ -0,0 +1,75 @@ +import { GameState } from './App'; +import './Game.css'; +import base_filled from './img/base_filled.png'; +import base_empty from './img/base_empty.png'; +import out_filled from './img/out_out.png'; +import out_empty from './img/out_in.png'; + +function Game(props: {gameId: string, state : GameState}) { + let state = props.state; + return ( +
+
+
Inning: {state.display_top_of_inning ? "🔼" : "🔽"} {state.display_inning}/{state.max_innings}
+
{state.title}
+
{state.weather_emoji} {state.weather_text}
+
+
+
+ + +
+
+
+ +
+ + +
+
+
+
OUTS
+
+ {[1, 2].map((out) => )} +
+
+
+
+
PITCHER
+
{state.pitcher}
+
BATTER
+
{state.batter}
+
+
+
{state.update_emoji}
+
{state.update_text}
+
+
+
+
{state.display_top_of_inning ? state.away_name : state.home_name} batting.
+
{state.leagueoruser} (share)
+
+
+ ); +} + +function Team(props: {name: string, score: number}) { + return ( +
+
{ props.name }
+
{ props.score }
+
+ ); +} + +function Base(props: {name: string | null}) { + return ( + { + ); +} + +function Out(props: {thisOut: number, totalOuts: number}) { + return ; +} + +export default Game; \ No newline at end of file diff --git a/static/img/base_empty.png b/simmadome/src/img/base_empty.png similarity index 100% rename from static/img/base_empty.png rename to simmadome/src/img/base_empty.png diff --git a/static/img/base_filled.png b/simmadome/src/img/base_filled.png similarity index 100% rename from static/img/base_filled.png rename to simmadome/src/img/base_filled.png diff --git a/static/img/out_in.png b/simmadome/src/img/out_in.png similarity index 100% rename from static/img/out_in.png rename to simmadome/src/img/out_in.png diff --git a/static/img/out_out.png b/simmadome/src/img/out_out.png similarity index 100% rename from static/img/out_out.png rename to simmadome/src/img/out_out.png diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index eaffa81..cb02d92 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -8,7 +8,7 @@ import reportWebVitals from './reportWebVitals'; ReactDOM.render(
- + , document.getElementById('root') ); @@ -22,7 +22,7 @@ function Header() { Github
Twitter -

THE SIMMADOME

+

THE SIMMADOME

Join SIBR on to start your own games!

); diff --git a/static/.DS_Store b/static/.DS_Store deleted file mode 100644 index a09a1797229b394436d0b5a793040fb34b159a6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5Iwu5S<|@EYYN(K%&_z8Dj+1Z^dai_c^WhV%a7hup zk!GHEKD+iSc03}YtK)VlvJjC5YA7#eYO%O!B^T+L1J(9et{;c~P~}ZItac{P(#vkY ztLih-4_&v}4;$n*H&^$sAMbCsKXv`EoroTus$HkvhcPlh2FL&zAOq*l0D87ba~ViW z2FL&z_-4TFhXOTh6URWmI$(SR0NQW73!Z(J02Xrq+r%*t9*9OMFiJH?42^R5OXjtS zV_=kv`pMWQPu84J)K7=Mc)DmCNJ|FDz$pW>ST3yp-$DPF|4)m!A_HXLtQgRFx9(Q> zr0lKL$62o}& a { - background-color: transparent; - text-decoration: underline; -} - -#link_div > a:link, #link_div > a:visited { - color: lightblue; -} - -#link_div > a:hover { - color: white; -} - -img.emoji { - height: 14px; -} \ No newline at end of file diff --git a/static/css/game_page.css b/static/css/game_page.css deleted file mode 100644 index 69f0cc7..0000000 --- a/static/css/game_page.css +++ /dev/null @@ -1,7 +0,0 @@ -#game_container { - margin-top: 3rem; - margin-left: 1rem; - margin-right: 1rem; - display: flex; - justify-content: space-around; -} \ No newline at end of file diff --git a/static/css/games_page.css b/static/css/games_page.css deleted file mode 100644 index d8d9e02..0000000 --- a/static/css/games_page.css +++ /dev/null @@ -1,80 +0,0 @@ -.container { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(32rem, 1fr)); - grid-gap: 50px 30px; /*space between rows, then columns*/ - grid-auto-flow: row; -} - -.emptyslot, .game { - min-height: 18.75rem; - justify-self: center; - max-width: 44rem; -} - -#filters { - display: flex; - justify-content: center; - width: 100%; - align-items: center; - margin-top: 10px; - margin-bottom: 20px; -} - -#filters > * { - padding: 0.25rem 0.5rem; - margin: 0rem 0.5rem; - font-size: 16pt; - background: rgba(0,0,0,0); -} - -#filters > .filter { - border-radius: 0.5rem; - min-width: 6.25rem; - text-align: center; - border: none; - color: white; - text-decoration: none; -} - -#selected_filter { - background: rgb(113, 54, 138); -} - -#footer { - display: flex; - flex-direction: column; - justify-content: center; - width: 100%; - height: 4.5rem; -} - -#footer > div { - text-align: center; - font-size: 16pt; - position: relative; - top: 0.25rem; -} - -.emptyslot { - border: 2px dashed white; - border-radius: 15px; - align-self: stretch; - justify-self: stretch; - text-align: center; - color: white; -} - -@media only screen and (max-device-width: 800px) { - .container { - display: grid; - grid-template-columns: repeat(1, minmax(700px, 90%)); - position: absolute; - left: 50%; - transform: translate(-50%, 0); - } - - .emptyslot { - border: none; - min-height: 0px; - } -} diff --git a/static/css/naturalblack.png b/static/css/naturalblack.png deleted file mode 100644 index e600af5848041842f5055e1ba8da0f12e0f1b64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261640 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 diff --git a/static/css/prism.png b/static/css/prism.png deleted file mode 100644 index 0f02b16e7d3280702a48b9eb1d31401db18cc8f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9697 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 Y%zHG&&i@Mdn=Jy{-i?)Sx0V0@04#ug>;M1& diff --git a/static/discord.png b/static/discord.png deleted file mode 100644 index 49dde81caf2a4540b8a55358784bbccc007c2b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9103 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 diff --git a/static/js/.DS_Store b/static/js/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 { - - filterjson = []; - for (var game of json) { - if (game.league == filter || filter == "All") { - filterjson.push(game); - } - } - - if (filterjson.length == 0) { - $('#footer div').html("No games right now. Why not head over to Discord and start one?"); - } else { - $('#footer div').html(""); - } - - var searchparams = new URLSearchParams(window.location.search); - if (searchparams.has('game') && filterjson.some(x => x.timestamp == searchparams.get('game')) && grid.children[0].timestamp != searchparams.get('game')) { - var game = filterjson.find(x => x.timestamp == searchparams.get('game')) - var oldbox = Array.prototype.slice.call(grid.children).find(x => x.timestamp == game.timestamp) - if (oldbox) { clearBox(oldbox) } - insertGame(0, game) - } - - //replace games that have ended with empty slots - for (var slotnum = 0; slotnum < grid.children.length; slotnum++) { - if (grid.children[slotnum].className == "game" && !filterjson.some((x) => x.timestamp == grid.children[slotnum].timestamp)) { - clearBox(grid.children[slotnum]) - } - } - - for (var game of filterjson) { - //updates game in list - for (var slotnum = 0; slotnum < grid.children.length; slotnum++) { - if (grid.children[slotnum].timestamp == game.timestamp) { - insertGame(slotnum, game); - }; - }; - - //adds game to list if not there already - if (!Array.prototype.slice.call(grid.children).some(x => x.timestamp == game.timestamp)) { - for (var slotnum = 0; true; slotnum++) { //this is really a while loop but shh don't tell anyone - if (slotnum >= grid.children.length) { - insertEmpty(grid); - } - if (grid.children[slotnum].className == "emptyslot") { - insertGame(slotnum, game); - break; - }; - }; - } - - fillgrid(grid) - }; -} - -const insertEmpty = (grid) => { - var newBox = document.createElement("DIV"); - newBox.className = "emptyslot"; - grid.appendChild(newBox); -} - -const insertGame = (gridboxnum, game) => { - var thisBox = grid.children[gridboxnum]; - thisBox.className = "game"; - thisBox.timestamp = game.timestamp; - thisBox.innerHTML = game.html; - twemoji.parse(thisBox); -}; - -const insertLeague = (league) => { - var btn = document.createElement("BUTTON"); - btn.className = "filter"; - btn.innerHTML = league; - $('#filters').append(btn); - return btn; -} - -const clearBox = (box) => { - box.className = "emptyslot"; - box.timestamp = null; - box.innerHTML = ""; -} - -const fillgrid = (grid) => { - var gridwidth = window.getComputedStyle(grid).getPropertyValue('grid-template-columns').split(" ").length //hack to get number of grid columns - - // add cells to fill last row - while (grid.children.length % gridwidth != 0) { - insertEmpty(grid) - } - - //remove last rows if not needed - while (grid.children.length > gridwidth && Array.prototype.slice.call(grid.children).slice(grid.children.length - gridwidth).every( x => x.className == 'emptyslot')) { - for (var i = 0; i < gridwidth; i++) { - grid.removeChild(grid.children[grid.children.length-1]); - } - } -} - -const updateLeagues = (games) => { - //get all leagues - var leagues = [] - for (var game of games) { - if (game.league != "" && !leagues.includes(game.league)) { - leagues.push(game.league) - } - } - - //remove leagues no longer present - $('#filters .filter').each(function(index) { - if (!leagues.includes($(this).text())) { - if (this.id != 'selected_filter' && $(this).text() != "All") { //don't remove the currently selected filter or the "all" filter - $(this).remove(); - } - } else { - leagues.splice(leagues.indexOf($(this).text()), 1); - } - }) - - // add leagues not already present - for (var league of leagues) { // we removed the entries that are already there in the loop above - insertLeague(league) - } - - //add click handlers to each filter - $('#filters .filter').each(function(index) { - this.onclick = function() { - if ($('#filters #selected_filter').text() == 'All') { - updateGames([], ""); // clear grid when switching off of All, to make games collapse to top - } - $('#filters #selected_filter').attr('id', ''); - this.id = 'selected_filter'; - - var search = new URLSearchParams(); - search.append('league', this.textContent); - history.pushState({}, "", "/" + (this.textContent != 'All' ? "?" + search.toString() : "")); - updateGames(lastupdate, this.textContent); - } - }) -} - -window.onpopstate = function(e) { - var searchparams = new URLSearchParams(window.location.search); - updateLeagues(lastupdate); - $('#filters #selected_filter').attr('id', ''); - if (searchparams.has('league')) { - var filter_found = false - $('#filters .filter').each(function(i) { if (this.textContent == searchparams.get('league')) { this.id = 'selected_filter'; filter_found = true }}); - if (!filter_found) { insertLeague(searchparams.get('league')).id = 'selected_filter' } - - updateGames(lastupdate, searchparams.get('league')); - } else { - $('#filters .filter').each(function(i) { if (this.textContent == 'All') { this.id = 'selected_filter' }}) - updateGames(lastupdate, "All"); - } -} - -window.addEventListener('resize', function(e) { - fillgrid(grid) -}) \ No newline at end of file diff --git a/templates/.DS_Store b/templates/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - - - - - - - ⚾ The Simmadome - - - - - - - - {% block head_tags %}{% endblock %} - - - - - {% block body %}{% endblock %} - - diff --git a/templates/game.html b/templates/game.html deleted file mode 100644 index 944037e..0000000 --- a/templates/game.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "base.html" %} -{% block head_tags %} - - - -{% endblock %} -{% block body %} -
-
-
-{% endblock %} \ No newline at end of file diff --git a/templates/game_box.html b/templates/game_box.html deleted file mode 100644 index c4d1d1d..0000000 --- a/templates/game_box.html +++ /dev/null @@ -1,53 +0,0 @@ -{% macro base(number) -%} -src={% if state.bases[number] %}"/static/img/base_filled.png" alt="{{state.bases[number]}}"{% else %}"/static/img/base_empty.png"{% endif %} -{%- endmacro %} -{% macro out(number) -%} -{% if number <= state.outs %}/static/img/out_out.png{% else %}/static/img/out_in.png{% endif %} -{%- endmacro %} -
-
Inning: {% if state.display_top_of_inning == true %}🔼{% else %}🔽{% endif %} {{ state.display_inning }}/{{ state.max_innings }}
-
{{ state.title }}
-
{{ state.weather_emoji }} {{ state.weather_text }}
-
-
-
-
-
{{ state.away_name }}
-
{{ state.away_score }}
-
-
-
{{ state.home_name }}
-
{{ state.home_score }}
-
-
-
-
- -
- - -
-
-
-
OUTS
-
- - -
-
-
-
-
PITCHER
-
{{ state.pitcher }}
-
BATTER
-
{{ state.batter }}
-
-
-
{{ state.update_emoji }}
-
{{ state.update_text }}
-
-
- \ No newline at end of file diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index 0385b01..0000000 --- a/templates/index.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "base.html" %} -{% block head_tags %} - - - -{% endblock %} -{% block body %} -
-
Filter:
- - {% if league %}{% endif %} -
-
-
-
-
-
- -{% endblock %} \ No newline at end of file From 364834befa9955513452cf290303e8caf6195461 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Thu, 7 Jan 2021 06:33:44 -0500 Subject: [PATCH 03/78] more progress, switch to using hooks over classes --- main_controller.py | 1 + simmadome/src/App.tsx | 177 ++++++++++++++++++------------------------ 2 files changed, 77 insertions(+), 101 deletions(-) diff --git a/main_controller.py b/main_controller.py index 707c9f7..9692ce0 100644 --- a/main_controller.py +++ b/main_controller.py @@ -25,6 +25,7 @@ game_states = [] @socketio.on("recieved") def handle_new_conn(data): + print("new connection") socketio.emit("states_update", game_states, room=request.sid) def update_loop(): diff --git a/simmadome/src/App.tsx b/simmadome/src/App.tsx index 20fd97b..c7e165e 100644 --- a/simmadome/src/App.tsx +++ b/simmadome/src/App.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState, useRef, useEffect} from 'react'; import io from 'socket.io-client'; import './App.css'; import Game from './Game'; @@ -26,120 +26,95 @@ interface GameState { type GameList = ([id: string, game: GameState] | null)[]; -interface AppProps { - filter: string | null - gameId: string | null -} +function App(props: {filter: string | null, gameId: string | null}) { -interface AppState { - filter: string - games: [string, GameState][] -} + let [games, setGames] = useState(new Array<[string, GameState]>()); + let [filter, setFilter] = useState(""); + useListener(setGames); -class App extends React.Component { - gameList: GameList; + let filters: string[] = []; + games.forEach((game, id) => { if (game[1].is_league && !filters.includes(game[1].leagueoruser)) { filters.push(game[1].leagueoruser) }}); - constructor(props: AppProps) { - super(props); - - let socket = io(); - socket.on('connect', () => socket.emit('recieved', {})); - socket.on('states_update', (update: [string, GameState][]) => this.onStatesUpdate(update)); - - this.gameList = []; - this.state = { - filter: props.filter ?? "", - games: [] - }; - this.onSelectNewFilter = this.onSelectNewFilter.bind(this); - } - - onStatesUpdate(newStates: [string, GameState][]) { - console.log(newStates); - this.setState({ games: newStates }); - } - - onSelectNewFilter(newFilter: string) { - this.setState({ filter: newFilter }); - this.gameList = []; - } - - updateGameList() { - let filterGames = this.state.games.filter((game, i) => this.state.filter === "" || game[1].leagueoruser === this.state.filter) - - //remove games no longer present, update games with new info - for (let i = 0; i < this.gameList.length; i ++) { - if (this.gameList[i] !== null) { - let newState = filterGames.find((val) => val[0] === this.gameList[i]![0]); - if (newState !== undefined) { - this.gameList[i] = newState; - } else { - this.gameList[i] = null; - } - } - } - - // add games not present - for (let game of filterGames) { - if (!this.gameList.find((val) => val !== null && val[0] === game[0])) { - let firstEmpty = this.gameList.indexOf(null); - if (firstEmpty < 0) { - this.gameList.push(game) - } else { - this.gameList[firstEmpty] = game; - } - } - } - - //remove trailing empty cells - while (this.gameList[this.gameList.length-1] === null) { - this.gameList.pop(); - } - } - - render() { - this.updateGameList(); - - let filters: string[] = []; - this.state.games.forEach((game, id) => { if (game[1].is_league && !filters.includes(game[1].leagueoruser)) { filters.push(game[1].leagueoruser) }}); - return ( -
- - -
0}/> -
- ); - } -} - -function Filters (props: {filterList: string[], selectedFilter: string, onSelectNewFilter: (newFilter: string) => void}) { - let filters = props.filterList.map((filter: string) => - - ) + let gameList = useRef(new Array<(string | null)>()); + let filterGames = games.filter((game, i) => filter === "" || game[1].leagueoruser === filter); + updateList(gameList.current, filterGames); return ( -
-
Filter:
- - {filters} +
+ {gameList.current = []; setFilter(filter)}}/> + val !== null ? filterGames.find((game) => game[0] === val) as [string, GameState] : null )}/> +
0}/>
); } +// App Utils + +// connects to the given url (or host if none) and waits for state updates +const useListener = (onUpdate: (update: [string, GameState][]) => void, url: string | null = null) => { + useEffect(() => { + let socket = url ? io(url) : io(); + socket.on('connect', () => socket.emit('recieved', {})); + socket.on('states_update', onUpdate); + return () => {socket.disconnect()} + }, [url]) +} + +// adds and removes games from list to keep it up to date, without relocating games already in place +function updateList(gameList: (string | null)[], games: [string, GameState][]) { + + //remove games no longer present + for (let i = 0; i < gameList.length; i ++) { + if (gameList[i] !== null && games.findIndex((val) => val[0] === gameList[i]) < 0) { + gameList[i] = null; + } + } + + // add games not present + for (let game of games) { + if (!gameList.find((val) => val !== null && val === game[0])) { + let firstEmpty = gameList.indexOf(null); + if (firstEmpty < 0) { + gameList.push(game[0]) + } else { + gameList[firstEmpty] = game[0]; + } + } + } + + //remove trailing empty cells + while (gameList[gameList.length-1] === null) { + gameList.pop(); + } +} + +function Filters (props: {filterList: string[], selectedFilter: string, onSelectNewFilter: (newFilter: string) => void}) { + function Filter(innerprops: {title: string, filter:string} ) { + return ( + + ); + } + + return ( +
+
Filter:
+ + {props.filterList.map((filter: string) => + + )} +
+ ); +} function Grid(props: { gameList: GameList }) { return (
{props.gameList.map((game) => {if (game) { - return + return } else { return
}})} From 09b90cf445c20ba2c71280d5a581ac72e3720c64 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Thu, 7 Jan 2021 16:22:39 -0500 Subject: [PATCH 04/78] add grid filling --- main_controller.py | 1 - simmadome/src/App.css | 10 ++++++--- simmadome/src/App.tsx | 50 +++++++++++++++++++++++++++++++++++-------- 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/main_controller.py b/main_controller.py index 9692ce0..707c9f7 100644 --- a/main_controller.py +++ b/main_controller.py @@ -25,7 +25,6 @@ game_states = [] @socketio.on("recieved") def handle_new_conn(data): - print("new connection") socketio.emit("states_update", game_states, room=request.sid) def update_loop(): diff --git a/simmadome/src/App.css b/simmadome/src/App.css index d8d9e02..d99b790 100644 --- a/simmadome/src/App.css +++ b/simmadome/src/App.css @@ -5,10 +5,16 @@ grid-auto-flow: row; } +.slot_container { + display: flex; + justify-content: space-around; +} + .emptyslot, .game { min-height: 18.75rem; - justify-self: center; max-width: 44rem; + min-width: 32rem; + width: 100%; } #filters { @@ -58,8 +64,6 @@ .emptyslot { border: 2px dashed white; border-radius: 15px; - align-self: stretch; - justify-self: stretch; text-align: center; color: white; } diff --git a/simmadome/src/App.tsx b/simmadome/src/App.tsx index c7e165e..58dc594 100644 --- a/simmadome/src/App.tsx +++ b/simmadome/src/App.tsx @@ -1,4 +1,4 @@ -import React, {useState, useRef, useEffect} from 'react'; +import React, {useState, useRef, useEffect, useLayoutEffect} from 'react'; import io from 'socket.io-client'; import './App.css'; import Game from './Game'; @@ -56,7 +56,7 @@ const useListener = (onUpdate: (update: [string, GameState][]) => void, url: str let socket = url ? io(url) : io(); socket.on('connect', () => socket.emit('recieved', {})); socket.on('states_update', onUpdate); - return () => {socket.disconnect()} + return () => {socket.disconnect()}; }, [url]) } @@ -111,13 +111,45 @@ function Filters (props: {filterList: string[], selectedFilter: string, onSelect } function Grid(props: { gameList: GameList }) { - return ( -
- {props.gameList.map((game) => {if (game) { - return - } else { - return
- }})} + let self: React.RefObject = useRef(null); + let [numcols, setNumcols] = useState(3); + let newList = [...props.gameList]; + + while (newList.length === 0 || newList.length % numcols !== 0) { + newList.push(null); + } + + function getCols() { + if (self.current !== null) { + //this is a hack, but there's weirdly no "real" way to get the number of columns + return window.getComputedStyle(self.current).getPropertyValue('grid-template-columns').split(' ').length; + } else { + return 3; + } + } + + useLayoutEffect(() => { + setNumcols(getCols()); + }, []) + + useEffect(() => { + window.addEventListener('resize', (event) => { + setNumcols(getCols()); + }) + }) + + + let slots = newList.map((game) => { + if (game) { + return + } else { + return
+ } + }) + + return ( +
+ {slots.map((elem) =>
{elem}
)}
); } From 0157ea3122a0edd9d53b719a7fdbe68650d4c67d Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Fri, 8 Jan 2021 00:29:39 -0500 Subject: [PATCH 05/78] React conversion DONE! --- Makefile | 13 ++ README.md | 14 +- simmadome/package-lock.json | 177 +++++++++++++++++++++++ simmadome/package.json | 6 + simmadome/public/favicon.ico | Bin 3870 -> 0 bytes simmadome/public/index.html | 25 +--- simmadome/public/logo192.png | Bin 5347 -> 0 bytes simmadome/public/logo512.png | Bin 9664 -> 0 bytes simmadome/public/manifest.json | 25 ---- simmadome/src/Game.css | 2 +- simmadome/src/Game.tsx | 13 +- simmadome/src/GamePage.css | 7 + simmadome/src/GamePage.tsx | 24 +++ simmadome/src/{App.css => GamesPage.css} | 0 simmadome/src/{App.tsx => GamesPage.tsx} | 106 ++++++-------- simmadome/src/GamesUtil.tsx | 39 +++++ simmadome/src/index.css | 5 +- simmadome/src/index.tsx | 14 +- 18 files changed, 349 insertions(+), 121 deletions(-) create mode 100644 Makefile delete mode 100644 simmadome/public/favicon.ico delete mode 100644 simmadome/public/logo192.png delete mode 100644 simmadome/public/logo512.png delete mode 100644 simmadome/public/manifest.json create mode 100644 simmadome/src/GamePage.css create mode 100644 simmadome/src/GamePage.tsx rename simmadome/src/{App.css => GamesPage.css} (100%) rename simmadome/src/{App.tsx => GamesPage.tsx} (58%) create mode 100644 simmadome/src/GamesUtil.tsx diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0191d89 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +SOURCES = $(wildcard ./simmadome/src/*) $(wildcard ./simmadome/public/*) +OUTPUTS = $(wildcard ./simmadome/build/*) + +.PHONY: run frontend + +run: $(OUTPUTS) + python3 the_prestige.py + +frontend: + (cd simmadome && npm run build) + +$(OUTPUTS): $(SOURCES) + (cd simmadome && npm run build) \ No newline at end of file diff --git a/README.md b/README.md index 04105fa..9389d03 100644 --- a/README.md +++ b/README.md @@ -23,26 +23,26 @@ accepting pull requests, check the issues for to-dos. - then another blank line seperating your batters and your pitchers. - the final lines are the names of the pitchers in your rotation, rotations can contain any number of pitchers between 1 and 8. - if you did it correctly, you'll get a team embed with a prompt to confirm. hit the 👍 and your team will be saved! -- m;deleteteam [teamname] (requires team ownership) +- m;deleteteam [teamname] \(requires team ownership) - allows you to delete the team with the provided name. you'll get an embed with a confirmation to prevent accidental deletions. hit the 👍 and your team will be deleted. - m;import - imports an onomancer collection as a new team. you can use the new onomancer simsim setting to ensure compatibility. similarly to saveteam, you'll get a team embed with a prompt to confirm, hit the 👍 and your team will be saved! #### editing (all of these commands require ownership and exact spelling of the team name): -- m;addplayer batter/pitcher [team name] [player name] +- m;addplayer batter/pitcher [team name] \[player name] - adds a new player to the end of your team, either in the lineup or the rotation depending on which version you use. use addplayer batter or addplayer pitcher at the top of a list with entries separated by new lines: - the name of the team you want to add the player to. - the name of the player you want to add to the team. -- m;moveplayer [team name] [player name] [new lineup/rotation position number] +- m;moveplayer [team name] \[player name] [new lineup/rotation position number] - moves a player within your lineup or rotation. if you want to instead move a player from your rotation to your lineup or vice versa, use m;swapsection instead. use this command at the top of a list with entries separated by new lines: - the name of the team you want to move the player on. - the name of the player you want to move. - the position you want to move them too, indexed with 1 being the first position of the lineup or rotation. all players below the specified position in the lineup or rotation will be pushed down. -- m;swapsection [team name] [player name] +- m;swapsection [team name] \[player name] - swaps a player from your lineup to the end of your rotation or your rotation to the end of your lineup. use this command at the top of a list with entries separated by new lines: - the name of the team you want to swap the player on. - the name of the player you want to swap. -- m;removeplayer [team name] [player name] +- m;removeplayer [team name] \[player name] - removes a player from your team. if there are multiple copies of the same player on a team this will only delete the first one. use this command at the top of a list with entries separated by new lines: - the name of the team you want to remove the player from. - the name of the player you want to remove. @@ -96,3 +96,7 @@ these folks are helping me a *ton* via patreon, and i cannot possibly thank them - Chris Denmark - Astrid Bek - Kameleon + +## Attribution + +Twemoji is copyright 2020 Twitter, Inc and other contributors; code licensed under [the MIT License](http://opensource.org/licenses/MIT), graphics licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/simmadome/package-lock.json b/simmadome/package-lock.json index 25e47fa..cccf2db 100644 --- a/simmadome/package-lock.json +++ b/simmadome/package-lock.json @@ -2214,6 +2214,11 @@ "@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==" + }, "@types/html-minifier-terser": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", @@ -2311,6 +2316,25 @@ "@types/react": "^16" } }, + "@types/react-router": { + "version": "5.1.10", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.10.tgz", + "integrity": "sha512-yu11Hu16CfGvvBWc7wluRlxbwfuSlY0snEntbbOTvfgMvyO6uLaEpAbnVOntr+9TNIpR++OOlPkmDcJPxOXRaQ==", + "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==", + "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", @@ -2347,6 +2371,11 @@ "@types/jest": "*" } }, + "@types/twemoji": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@types/twemoji/-/twemoji-12.1.1.tgz", + "integrity": "sha512-dW1B1WHTfrWmEzXb/tp8xsZqQHAyMB9JwLwbBqkIQVzmNUI02R7lJqxUpKFM114ygNZHKA1r74oPugCAiYHt1A==" + }, "@types/uglify-js": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", @@ -7080,6 +7109,19 @@ "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", @@ -7090,6 +7132,14 @@ "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", @@ -9946,6 +9996,15 @@ "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", @@ -12389,6 +12448,52 @@ "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.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.1.tgz", @@ -12845,6 +12950,11 @@ "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", @@ -14543,6 +14653,16 @@ "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", @@ -14680,6 +14800,58 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "twemoji": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-13.0.1.tgz", + "integrity": "sha512-mrTBq+XpCLM4zm76NJOjLHoQNV9mHdBt3Cba/T5lS1rxn8ArwpqE47mqTocupNlkvcLxoeZJjYSUW0DU5ZwqZg==", + "requires": { + "fs-extra": "^8.0.1", + "jsonfile": "^5.0.0", + "twemoji-parser": "13.0.0", + "universalify": "^0.1.2" + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "jsonfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz", + "integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^0.1.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "twemoji-parser": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-13.0.0.tgz", + "integrity": "sha512-zMaGdskpH8yKjT2RSE/HwE340R4Fm+fbie4AaqjDa4H/l07YUmAvxkSfNl6awVWNRRQ0zdzLQ8SAJZuY5MgstQ==" + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -15018,6 +15190,11 @@ "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", diff --git a/simmadome/package.json b/simmadome/package.json index 2d10414..e37f8ef 100644 --- a/simmadome/package.json +++ b/simmadome/package.json @@ -11,11 +11,17 @@ "@types/node": "^12.19.12", "@types/react": "^16.14.2", "@types/react-dom": "^16.9.10", + "@types/react-router": "^5.1.10", + "@types/react-router-dom": "^5.1.7", "@types/socket.io-client": "^1.4.34", + "@types/twemoji": "^12.1.1", "react": "^17.0.1", "react-dom": "^17.0.1", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", "react-scripts": "4.0.1", "socket.io-client": "^3.0.5", + "twemoji": "^13.0.1", "typescript": "^4.1.3", "web-vitals": "^0.2.4" }, diff --git a/simmadome/public/favicon.ico b/simmadome/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/simmadome/public/index.html b/simmadome/public/index.html index aa069f2..ddec811 100644 --- a/simmadome/public/index.html +++ b/simmadome/public/index.html @@ -5,26 +5,13 @@ - - - - - - React App + + + + diff --git a/simmadome/public/logo192.png b/simmadome/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/simmadome/public/manifest.json b/simmadome/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/simmadome/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "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/simmadome/src/Game.css b/simmadome/src/Game.css index 59ae0c5..1832cad 100644 --- a/simmadome/src/Game.css +++ b/simmadome/src/Game.css @@ -169,7 +169,7 @@ border-radius: 4px; align-items: center; display: flex; - justify-content: start; + justify-content: flex-start; } .update_emoji { diff --git a/simmadome/src/Game.tsx b/simmadome/src/Game.tsx index f96fcd8..95024f2 100644 --- a/simmadome/src/Game.tsx +++ b/simmadome/src/Game.tsx @@ -1,4 +1,6 @@ -import { GameState } from './App'; +import { GameState } from './GamesUtil'; +import twemoji from 'twemoji'; +import React, { useRef, useLayoutEffect } from 'react'; import './Game.css'; import base_filled from './img/base_filled.png'; import base_empty from './img/base_empty.png'; @@ -6,9 +8,16 @@ import out_filled from './img/out_out.png'; import out_empty from './img/out_in.png'; function Game(props: {gameId: string, state : GameState}) { + let self: React.MutableRefObject = useRef(null); + useLayoutEffect(() => { + if (self.current) { + twemoji.parse(self.current); + } + }) + let state = props.state; return ( -
+
Inning: {state.display_top_of_inning ? "🔼" : "🔽"} {state.display_inning}/{state.max_innings}
{state.title}
diff --git a/simmadome/src/GamePage.css b/simmadome/src/GamePage.css new file mode 100644 index 0000000..69f0cc7 --- /dev/null +++ b/simmadome/src/GamePage.css @@ -0,0 +1,7 @@ +#game_container { + margin-top: 3rem; + margin-left: 1rem; + margin-right: 1rem; + display: flex; + justify-content: space-around; +} \ No newline at end of file diff --git a/simmadome/src/GamePage.tsx b/simmadome/src/GamePage.tsx new file mode 100644 index 0000000..76ef9b6 --- /dev/null +++ b/simmadome/src/GamePage.tsx @@ -0,0 +1,24 @@ +import React, {useState} from 'react'; +import {GameState, useListener} from './GamesUtil'; +import './GamePage.css'; +import Game from './Game'; + +function GamePage() { + let searchparams = new URLSearchParams(window.location.search); + let gameId = searchparams.get('id'); + + let [games, setGames] = useState(new Array<[string, GameState]>()); + useListener((newGames) => setGames(newGames)); + + let game = games.find((game) => game[0] === gameId) + return ( +
+ { game ? + : + "The game you're looking for either doesn't exist or has already ended." + } +
+ ); +} + +export default GamePage; \ No newline at end of file diff --git a/simmadome/src/App.css b/simmadome/src/GamesPage.css similarity index 100% rename from simmadome/src/App.css rename to simmadome/src/GamesPage.css diff --git a/simmadome/src/App.tsx b/simmadome/src/GamesPage.tsx similarity index 58% rename from simmadome/src/App.tsx rename to simmadome/src/GamesPage.tsx index 58dc594..236fc48 100644 --- a/simmadome/src/App.tsx +++ b/simmadome/src/GamesPage.tsx @@ -1,67 +1,47 @@ import React, {useState, useRef, useEffect, useLayoutEffect} from 'react'; -import io from 'socket.io-client'; -import './App.css'; +import {GameState, GameList, useListener} from './GamesUtil'; +import {Link} from 'react-router-dom'; +import './GamesPage.css'; import Game from './Game'; -interface GameState { - bases: (string | null)[]; - outs: number; - display_top_of_inning: boolean - display_inning: number - max_innings: number - title: string - weather_emoji: string - weather_text: string - away_name: string - away_score: number - home_name: string - home_score: number - pitcher: string - batter: string - update_emoji: string - update_text: string - is_league: boolean - leagueoruser: string -} +function GamesPage() { + let [search, setSearch] = useState(window.location.search); + useEffect(() => { + setSearch(window.location.search); + }, [window.location.search]) -type GameList = ([id: string, game: GameState] | null)[]; - -function App(props: {filter: string | null, gameId: string | null}) { + let searchparams = new URLSearchParams(search); + let filter = searchparams.get('league') ?? "" let [games, setGames] = useState(new Array<[string, GameState]>()); - let [filter, setFilter] = useState(""); useListener(setGames); - let filters: string[] = []; - games.forEach((game, id) => { if (game[1].is_league && !filters.includes(game[1].leagueoruser)) { filters.push(game[1].leagueoruser) }}); + let filters = useRef(filter !== "" ? [filter] : []); + games.forEach((game) => { if (game[1].is_league && !filters.current.includes(game[1].leagueoruser)) { filters.current.push(game[1].leagueoruser) }}); + filters.current = filters.current.filter((f) => games.find((game) => game && game[1].is_league && game[1].leagueoruser === f) || f === filter); let gameList = useRef(new Array<(string | null)>()); let filterGames = games.filter((game, i) => filter === "" || game[1].leagueoruser === filter); - updateList(gameList.current, filterGames); + updateList(gameList.current, filterGames, searchparams.get('gameId')); return ( -
- {gameList.current = []; setFilter(filter)}}/> + <> + val !== null ? filterGames.find((game) => game[0] === val) as [string, GameState] : null )}/>
0}/> -
+ ); } -// App Utils - -// connects to the given url (or host if none) and waits for state updates -const useListener = (onUpdate: (update: [string, GameState][]) => void, url: string | null = null) => { - useEffect(() => { - let socket = url ? io(url) : io(); - socket.on('connect', () => socket.emit('recieved', {})); - socket.on('states_update', onUpdate); - return () => {socket.disconnect()}; - }, [url]) -} - // adds and removes games from list to keep it up to date, without relocating games already in place -function updateList(gameList: (string | null)[], games: [string, GameState][]) { +function updateList(gameList: (string | null)[], games: [string, GameState][], firstGame: string | null) { + // insert firstGame into first slot, if necessary + if (firstGame !== null && games.find((game) => game[0] === firstGame)) { + if (gameList.includes(firstGame)) { + gameList[gameList.indexOf(firstGame)] = null; + } + gameList[0] = firstGame; + } //remove games no longer present for (let i = 0; i < gameList.length; i ++) { @@ -88,14 +68,15 @@ function updateList(gameList: (string | null)[], games: [string, GameState][]) { } } -function Filters (props: {filterList: string[], selectedFilter: string, onSelectNewFilter: (newFilter: string) => void}) { +function Filters (props: {filterList: string[], selectedFilter: string}) { function Filter(innerprops: {title: string, filter:string} ) { + let search = new URLSearchParams(); + search.append('league', innerprops.filter); + return ( - + + {innerprops.title} + ); } @@ -127,29 +108,27 @@ function Grid(props: { gameList: GameList }) { return 3; } } - + + //set num cols after page loads useLayoutEffect(() => { setNumcols(getCols()); }, []) + //set num cols on page resize useEffect(() => { window.addEventListener('resize', (event) => { setNumcols(getCols()); }) }) - - let slots = newList.map((game) => { - if (game) { - return - } else { - return
- } - }) - + let emptyKey = 0; return (
- {slots.map((elem) =>
{elem}
)} + {newList.map((game) => ( +
+ {game ? :
} +
+ ))}
); } @@ -163,5 +142,4 @@ function Footer(props: { has_games: boolean }) { ); } -export default App; -export type { GameState }; \ No newline at end of file +export default GamesPage; \ No newline at end of file diff --git a/simmadome/src/GamesUtil.tsx b/simmadome/src/GamesUtil.tsx new file mode 100644 index 0000000..8002c02 --- /dev/null +++ b/simmadome/src/GamesUtil.tsx @@ -0,0 +1,39 @@ +import {useLayoutEffect} from 'react'; +import io from 'socket.io-client'; + +interface GameState { + bases: (string | null)[]; + outs: number; + display_top_of_inning: boolean + display_inning: number + max_innings: number + title: string + weather_emoji: string + weather_text: string + away_name: string + away_score: number + home_name: string + home_score: number + pitcher: string + batter: string + update_emoji: string + update_text: string + is_league: boolean + leagueoruser: string +} + +type GameList = ([id: string, game: GameState] | null)[]; + + +// connects to the given url (or host if none) and waits for state updates +const useListener = (onUpdate: (update: [string, GameState][]) => void, url: string | null = null) => { + useLayoutEffect(() => { + let socket = url ? io(url) : io(); + socket.on('connect', () => socket.emit('recieved', {})); + socket.on('states_update', onUpdate); + return () => {socket.disconnect()}; + }, [url]) +} + +export { useListener }; +export type { GameState, GameList }; \ No newline at end of file diff --git a/simmadome/src/index.css b/simmadome/src/index.css index 922dcd5..c08c49e 100644 --- a/simmadome/src/index.css +++ b/simmadome/src/index.css @@ -65,5 +65,8 @@ h2 { } img.emoji { - height: 14px; + height: 1em; + width: 1em; + margin: 0 .05em 0 .1em; + vertical-align: -0.1em; } \ No newline at end of file diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index cb02d92..9694cdd 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -1,19 +1,25 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; import './index.css'; -import App from './App'; +import GamesPage from './GamesPage'; +import GamePage from './GamePage'; import discordlogo from "./img/discord.png"; import reportWebVitals from './reportWebVitals'; ReactDOM.render( -
- + +
+ + }/> + }/> + + , document.getElementById('root') ); - function Header() { return (
); diff --git a/simmadome/src/GamesPage.tsx b/simmadome/src/GamesPage.tsx index 236fc48..6273423 100644 --- a/simmadome/src/GamesPage.tsx +++ b/simmadome/src/GamesPage.tsx @@ -22,7 +22,7 @@ function GamesPage() { let gameList = useRef(new Array<(string | null)>()); let filterGames = games.filter((game, i) => filter === "" || game[1].leagueoruser === filter); - updateList(gameList.current, filterGames, searchparams.get('gameId')); + updateList(gameList.current, filterGames, searchparams.get('game')); return ( <> From 013d1e0585ac4c5e6c27141645c1475fc50a8d4f Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Fri, 8 Jan 2021 11:03:11 -0500 Subject: [PATCH 07/78] move typsecript libs to dev deps --- simmadome/package.json | 22 ++++++++++++---------- simmadome/src/GamePage.tsx | 2 +- simmadome/src/GamesPage.tsx | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/simmadome/package.json b/simmadome/package.json index e37f8ef..c98a967 100644 --- a/simmadome/package.json +++ b/simmadome/package.json @@ -4,6 +4,17 @@ "private": true, "proxy": "http://localhost:5000", "dependencies": { + "react": "^17.0.1", + "react-dom": "^17.0.1", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "react-scripts": "4.0.1", + "socket.io-client": "^3.0.5", + "twemoji": "^13.0.1", + "typescript": "^4.1.3", + "web-vitals": "^0.2.4" + }, + "devDependencies" : { "@testing-library/jest-dom": "^5.11.8", "@testing-library/react": "^11.2.2", "@testing-library/user-event": "^12.6.0", @@ -14,16 +25,7 @@ "@types/react-router": "^5.1.10", "@types/react-router-dom": "^5.1.7", "@types/socket.io-client": "^1.4.34", - "@types/twemoji": "^12.1.1", - "react": "^17.0.1", - "react-dom": "^17.0.1", - "react-router": "^5.2.0", - "react-router-dom": "^5.2.0", - "react-scripts": "4.0.1", - "socket.io-client": "^3.0.5", - "twemoji": "^13.0.1", - "typescript": "^4.1.3", - "web-vitals": "^0.2.4" + "@types/twemoji": "^12.1.1" }, "scripts": { "start": "react-scripts start", diff --git a/simmadome/src/GamePage.tsx b/simmadome/src/GamePage.tsx index 76ef9b6..816108a 100644 --- a/simmadome/src/GamePage.tsx +++ b/simmadome/src/GamePage.tsx @@ -7,7 +7,7 @@ function GamePage() { let searchparams = new URLSearchParams(window.location.search); let gameId = searchparams.get('id'); - let [games, setGames] = useState(new Array<[string, GameState]>()); + let [games, setGames] = useState<[string, GameState][]>([]); useListener((newGames) => setGames(newGames)); let game = games.find((game) => game[0] === gameId) diff --git a/simmadome/src/GamesPage.tsx b/simmadome/src/GamesPage.tsx index 6273423..7e7c877 100644 --- a/simmadome/src/GamesPage.tsx +++ b/simmadome/src/GamesPage.tsx @@ -13,14 +13,14 @@ function GamesPage() { let searchparams = new URLSearchParams(search); let filter = searchparams.get('league') ?? "" - let [games, setGames] = useState(new Array<[string, GameState]>()); + let [games, setGames] = useState<[string, GameState][]>([]); useListener(setGames); let filters = useRef(filter !== "" ? [filter] : []); games.forEach((game) => { if (game[1].is_league && !filters.current.includes(game[1].leagueoruser)) { filters.current.push(game[1].leagueoruser) }}); filters.current = filters.current.filter((f) => games.find((game) => game && game[1].is_league && game[1].leagueoruser === f) || f === filter); - let gameList = useRef(new Array<(string | null)>()); + let gameList = useRef<(string | null)[]>([]); let filterGames = games.filter((game, i) => filter === "" || game[1].leagueoruser === filter); updateList(gameList.current, filterGames, searchparams.get('game')); From 20a13fdf2e6effac17ec23d6d3198a2597e3bf8e Mon Sep 17 00:00:00 2001 From: Sakimori Date: Sat, 9 Jan 2021 11:55:58 -0500 Subject: [PATCH 08/78] added another patron --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a670c83..343a2fd 100644 --- a/README.md +++ b/README.md @@ -98,3 +98,4 @@ these folks are helping me a *ton* via patreon, and i cannot possibly thank them - Kameleon - Ryan Littleton - Evie Diver +- iliana etaoin From 31acd0ceed767c52899f80080b39a24dbda59c40 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Sun, 10 Jan 2021 01:18:37 -0500 Subject: [PATCH 09/78] organize things and switch to using /game/:id over /game?id= --- .DS_Store | Bin 6148 -> 6148 bytes simmadome/src/Game.css | 9 +-------- simmadome/src/Game.tsx | 2 +- simmadome/src/GamePage.tsx | 8 +++----- simmadome/src/GamesPage.tsx | 8 ++------ simmadome/src/index.css | 13 ++++++++++++- simmadome/src/index.tsx | 4 ++-- 7 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.DS_Store b/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..79b6971a76e3452c18c33af99e0ab537c3e1adac 100644 GIT binary patch delta 249 zcmZoMXfc=|#>B`mF;Q%yo}wrV0|Nsi1A_nqLn=c)Lp+eoV4w3{`MCu^c?L$-oesFv<>tG%B<18M0p&Ro&Pg<#ICIDmx7rjmwVJpU7i1tg uK<~iD#1OX01|lq*xjDEwfF9eJ_?>w&zlb6$6VNt=$%Z1rn>|GKFarP{*g3uc delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2y8yc=*G7B0%I2AW_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z05sDNYXATM diff --git a/simmadome/src/Game.css b/simmadome/src/Game.css index 1832cad..fa2af13 100644 --- a/simmadome/src/Game.css +++ b/simmadome/src/Game.css @@ -1,10 +1,3 @@ -:root { - --background-main: #2f3136; /*discord dark theme background-secondary - the same color as the embeds*/ - --background-secondary: #4f545c; /*discord's background-tertiary*/ - --background-accent: #4f545c; /*discord's background-accent*/ - --highlight: rgb(113, 54, 138); /*matteo purple™*/ -} - .game { align-self: stretch; text-align: center; @@ -124,7 +117,7 @@ } .score { - background: var(--background-accent); + background: var(--background-secondary); width: 40px; min-width: 40px; height: 40px; diff --git a/simmadome/src/Game.tsx b/simmadome/src/Game.tsx index c9e47e1..b01a0b9 100644 --- a/simmadome/src/Game.tsx +++ b/simmadome/src/Game.tsx @@ -57,7 +57,7 @@ function Game(props: {gameId: string, state : GameState}) {
{state.display_top_of_inning ? state.away_name : state.home_name} batting.
-
{state.leagueoruser} (share)
+
{state.leagueoruser} (share)
); diff --git a/simmadome/src/GamePage.tsx b/simmadome/src/GamePage.tsx index 816108a..47839a3 100644 --- a/simmadome/src/GamePage.tsx +++ b/simmadome/src/GamePage.tsx @@ -1,16 +1,14 @@ import React, {useState} from 'react'; +import ReactRouter from 'react-router'; import {GameState, useListener} from './GamesUtil'; import './GamePage.css'; import Game from './Game'; -function GamePage() { - let searchparams = new URLSearchParams(window.location.search); - let gameId = searchparams.get('id'); - +function GamePage(props: ReactRouter.RouteComponentProps<{id: string}>) { let [games, setGames] = useState<[string, GameState][]>([]); useListener((newGames) => setGames(newGames)); - let game = games.find((game) => game[0] === gameId) + let game = games.find((game) => game[0] === props.match.params.id) return (
{ game ? diff --git a/simmadome/src/GamesPage.tsx b/simmadome/src/GamesPage.tsx index 7e7c877..3a2ad97 100644 --- a/simmadome/src/GamesPage.tsx +++ b/simmadome/src/GamesPage.tsx @@ -109,17 +109,13 @@ function Grid(props: { gameList: GameList }) { } } - //set num cols after page loads + //set num cols after page loads, then add listener to update if window resizes useLayoutEffect(() => { setNumcols(getCols()); - }, []) - - //set num cols on page resize - useEffect(() => { window.addEventListener('resize', (event) => { setNumcols(getCols()); }) - }) + }, []) let emptyKey = 0; return ( diff --git a/simmadome/src/index.css b/simmadome/src/index.css index c08c49e..663440d 100644 --- a/simmadome/src/index.css +++ b/simmadome/src/index.css @@ -1,11 +1,22 @@ @import url('https://fonts.googleapis.com/css2?family=Alegreya&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Goldman:wght@700&display=swap'); + +:root { + --background-main: #2f3136; + --background-secondary: #4f545c; + --background-tertiary: #202225; + --background-accent: #40444b; + --highlight: rgb(113, 54, 138); /*matteo purple™*/ + --accent-red: #f04747; + --accent-green: rgb(67, 181, 129); +} + body { background-image: url("img/naturalblack.png"); } /* Background pattern from Toptal Subtle Patterns */ -div, button, h1, h2, a { +* { font-family: 'Alegreya', serif; color: white; } diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index 9694cdd..1235dcc 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -12,8 +12,8 @@ ReactDOM.render(
- }/> - }/> + + , From 72edbf50229fde090f9ed74d53fb4ffb6e32fa56 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Sun, 10 Jan 2021 01:27:30 -0500 Subject: [PATCH 10/78] make league structure --- simmadome/src/CreateLeague.css | 177 +++++++++++++++++++++++ simmadome/src/CreateLeague.tsx | 250 +++++++++++++++++++++++++++++++++ simmadome/src/index.tsx | 2 + 3 files changed, 429 insertions(+) create mode 100644 simmadome/src/CreateLeague.css create mode 100644 simmadome/src/CreateLeague.tsx diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css new file mode 100644 index 0000000..e867503 --- /dev/null +++ b/simmadome/src/CreateLeague.css @@ -0,0 +1,177 @@ +th, td { + border: none; + padding: 0; + height: 100%; +} + +table { + border-collapse: collapse; + height: min-content; +} + +th .cl_subleague_bg { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} + +tbody tr:last-child .cl_subleague_bg { + border-bottom-left-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; +} + +input { + border: none; + border-radius: 1rem; + height: 2rem; + padding-left: 1rem; + background: var(--background-secondary); + font-size: 14pt; +} + +.cl_league_main { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + margin-top: 3rem; +} + +.cl_league_name { + margin: 1rem; +} + +.cl_league_options, .cl_league_structure { + display: flex; + background: var(--background-tertiary); + flex-direction: column; + max-width: 100%; + border-radius: 1rem; + padding-top: 1.5rem; +} + +.cl_league_structure, .cl_subleague_add_align { + display: flex; + align-items: center; + justify-content: center; + width: min-content; +} + +.cl_league_structure_table { + margin: 1rem; + margin-left: 0rem; + margin-top: 0rem; +} + +.cl_league_structure_scrollbox { + max-width: 100%; + overflow-y: scroll; +} + + /* Hide scrollbar for Chrome, Safari and Opera */ +.cl_league_structure_scrollbox::-webkit-scrollbar { + display: none; +} + +/* Hide scrollbar for IE, Edge and Firefox */ +.cl_league_structure_scrollbox { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +.cl_subleague_add_align{ + margin-left: 1.5rem; + padding-right: 1.5rem; +} + +.cl_subleague_header { + display: flex; + width:100%; + align-items: center; + justify-content: space-between; +} + +.cl_subleague_bg { + background: var(--background-main); + padding:1rem; + padding-bottom: 0rem; + margin: 0rem 0.5rem; + height: 100%; + width: 20rem; +} + +.cl_subleague_name, .cl_newteam_name { + flex-grow: 1; + margin-right: 0.5rem; +} + +.cl_division_name { + margin-bottom: 0.5rem; + width: 95%; +} + +.cl_division { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 1rem; + border-radius: 0.5rem; + background: var(--background-accent); +} + +.cl_team, .cl_team_add { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + margin: 0.25rem 0rem; +} + +.cl_team_name { + font-size: 14pt; + padding-right: 0.5rem; + overflow: hidden; + text-overflow: ellipsis; +} + +/* button styles */ + +button > .emoji { + margin: 0; +} + +.cl_subleague_delete, .cl_team_delete, .cl_division_delete, .cl_subleague_add, .cl_division_add, .cl_newteam_add { + padding: 0; + width: 2rem; + height: 2rem; + border: none; + border-radius: 1rem; + display: flex; + align-items: center; + justify-content: center; +} + +.cl_subleague_delete, .cl_team_delete, .cl_division_delete { + background: var(--accent-red); +} + +.cl_subleague_add, .cl_division_add, .cl_newteam_add { + background: var(--accent-green); +} + +.cl_subleague_add { + margin-top: 3rem; +} + +.cl_division_add { + margin: 1.25rem; +} + +.cl_division_delete { + margin-right: 1rem; + margin-top: 1rem; +} + +.cl_delete_filler { + min-width: 3rem; +} \ No newline at end of file diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx new file mode 100644 index 0000000..a64c4d8 --- /dev/null +++ b/simmadome/src/CreateLeague.tsx @@ -0,0 +1,250 @@ +import React, {useState, useRef, useLayoutEffect, useReducer} from 'react'; +import './CreateLeague.css'; +import twemoji from 'twemoji'; + +interface LeagueStructureState { + subleagues: SubleagueState[] +} + +interface SubleagueState { + name: string + divisions: DivisionState[] +} + +interface DivisionState { + name: string + teams: TeamState[] +} + +interface TeamState { + name: string +} + +let initLeagueStructure = { + subleagues: [0, 1].map((val) => ({ + name: "", + divisions: [0, 1].map((val) => ({ + name: "", + teams: [] + })) + })) +} + +type LeagueReducerActions = + {type: 'remove_subleague', subleague_index: number} | + {type: 'add_subleague'} | + {type: 'rename_subleague', subleague_index: number, name: string} | + {type: 'remove_divisions', division_index: number} | + {type: 'add_divisions'} | + {type: 'rename_division', subleague_index: number, division_index: number, name: string} | + {type: 'remove_team', subleague_index: number, division_index: number, name:string} | + {type: 'add_team', subleague_index:number, division_index:number, name:string} + +type DistributiveOmit = T extends any ? Omit : never; + +function leagueStructureReducer(state: LeagueStructureState, action: LeagueReducerActions): LeagueStructureState { + switch (action.type) { + case 'remove_subleague': + return {subleagues: removeIndex(state.subleagues, action.subleague_index)}; + case 'add_subleague': + return {subleagues: state.subleagues.concat([{ + name: "", + divisions: arrayOf(state.subleagues[0].divisions.length, i => ({ + name: "", + teams: [] + })) + }])}; + case 'rename_subleague': + return replaceSubleague(state, action.subleague_index, subleague => ({ + name: action.name, + divisions: subleague.divisions + })); + case 'remove_divisions': + return {subleagues: state.subleagues.map(subleague => ({ + name: subleague.name, + divisions: removeIndex(subleague.divisions, action.division_index) + }))}; + case 'add_divisions': + return {subleagues: state.subleagues.map(subleague => ({ + name: subleague.name, + divisions: subleague.divisions.concat([{name: "", teams: []}]) + }))}; + case 'rename_division': + return replaceDivision(state, action.subleague_index, action.division_index, division => ({ + name: action.name, + teams: division.teams + })); + case 'remove_team': + return replaceDivision(state, action.subleague_index, action.division_index, division => ({ + name: division.name, + teams: removeIndex(division.teams, division.teams.findIndex(val => val.name === action.name)) + })); + case 'add_team': + return replaceDivision(state, action.subleague_index, action.division_index, division => ({ + name: division.name, + teams: division.teams.concat([{name: action.name}]) + })); + } +} + +function replaceSubleague(state: LeagueStructureState, si: number, func: (val: SubleagueState) => SubleagueState) { + return {subleagues: replaceIndex(state.subleagues, si, func(state.subleagues[si]))} +} + +function replaceDivision(state: LeagueStructureState, si: number, di: number, func:(val: DivisionState) => DivisionState) { + return replaceSubleague(state, si, subleague => ({ + name: subleague.name, + divisions: replaceIndex(subleague.divisions, di, func(subleague.divisions[di])) + })) +} + +function removeIndex(arr: any[], index: number) { + return arr.slice(0, index).concat(arr.slice(index+1)); +} + +function replaceIndex(arr: T[], index: number, val: T) { + return arr.slice(0, index).concat([val]).concat(arr.slice(index+1)); +} + +function append(arr: T[], val: T) { + return arr.concat([val]); +} + +function arrayOf(length: number, func: (i: number) => T): T[] { + var out: T[] = []; + for (var i = 0; i < length; i++) { + out.push(func(i)); + } + return out; +} + +function CreateLeague() { + let [name, setName] = useState(""); + let [structure, dispatch] = useReducer(leagueStructureReducer, initLeagueStructure); + + let self = useRef(null) + + useLayoutEffect(() => { + if (self.current) { + twemoji.parse(self.current) + } + }) + + return ( +
+ setName(e.target.value)}/> + + +
+ ); +} + +function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dispatch}) { + return ( +
+
+
+ + + +
+ +
+
+ +
+ ); +} + +function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { + return ( + + + + {props.subleagues.map((subleague, i) => ( + +
+ 1} dispatch={action => + props.dispatch(Object.assign({subleague_index: i}, action)) + }/> +
+ + ))} + + + ); +} + +function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispatch:(action: DistributiveOmit) => void}) { + return ( +
+ + props.dispatch({type: 'rename_subleague', name: e.target.value}) + }/> + {props.canDelete ? : null} +
+ ); +} + +function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { + return ( + + {props.subleagues[0].divisions.map((val, di) => ( + + + {props.subleagues[0].divisions.length > 1 ? + : + null + } + + {props.subleagues.map((subleague, si) => ( + +
+ + props.dispatch(Object.assign({subleague_index: si, division_index: di}, action)) + }/> +
+ + ))} + + ))} + + ); +} + +function Division(props: {state: DivisionState, dispatch:(action: DistributiveOmit) => void}) { + let [newName, setNewName] = useState(""); + + return ( +
+ + props.dispatch({type: 'rename_division', name: e.target.value}) + }/> + {props.state.teams.map((team, i) => ( +
+
{team.name}
+ +
+ ))} +
+ setNewName(e.target.value)}/> + +
+
+ ); +} + +function LeagueOptions() { + return ( +
+
+ +
+
+ ); +} + +export default CreateLeague; \ No newline at end of file diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index 1235dcc..21bd0f7 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -4,6 +4,7 @@ import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; import './index.css'; import GamesPage from './GamesPage'; import GamePage from './GamePage'; +import CreateLeague from './CreateLeague'; import discordlogo from "./img/discord.png"; import reportWebVitals from './reportWebVitals'; @@ -13,6 +14,7 @@ ReactDOM.render(
+ From c3a35c07a4726e535d2ec25cdf2ec6cc2f10ccca Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Sun, 10 Jan 2021 23:47:49 -0500 Subject: [PATCH 11/78] work on team search --- main_controller.py | 24 ++++- simmadome/package-lock.json | 87 ++++++++++++++--- simmadome/package.json | 4 +- simmadome/src/CreateLeague.css | 101 ++++++++++++++------ simmadome/src/CreateLeague.tsx | 168 +++++++++++++++++++++------------ simmadome/src/index.tsx | 30 +++--- 6 files changed, 293 insertions(+), 121 deletions(-) diff --git a/main_controller.py b/main_controller.py index 707c9f7..3702495 100644 --- a/main_controller.py +++ b/main_controller.py @@ -1,6 +1,7 @@ import asyncio, time, datetime, games, json, threading, jinja2, leagues, os -from flask import Flask, url_for, Response, render_template, request, jsonify, send_from_directory +from flask import Flask, url_for, Response, render_template, request, jsonify, send_from_directory, abort from flask_socketio import SocketIO, emit +import database as db app = Flask("the-prestige", static_folder='simmadome/build') app.config['SECRET KEY'] = 'dev' @@ -16,6 +17,27 @@ def serve(path): else: return send_from_directory(app.static_folder, 'index.html') +### API + +@app.route('/api/teams/search') +def searchteams(): + query = request.args.get('query') + page_len = int(request.args.get('page_len')) + page_num = int(request.args.get('page_num')) + + if query is None: + abort(400, "A query term is required") + + result = db.search_teams(query) + if page_len is not None: #pagination should probably be doen in the sqlite query but this will do for now + if page_num is None: + abort(400, "A page_len argument must be accompanied by a page_num argument") + result = result[page_num*page_len : (page_num + 1)*page_len] + + return jsonify([json.loads(x[0])['name'] for x in result]) #currently all we need is the name but that can change + + +### SOCKETS thread2 = threading.Thread(target=socketio.run,args=(app,'0.0.0.0')) thread2.start() diff --git a/simmadome/package-lock.json b/simmadome/package-lock.json index cccf2db..a27cb55 100644 --- a/simmadome/package-lock.json +++ b/simmadome/package-lock.json @@ -1974,6 +1974,7 @@ "version": "7.29.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.1.tgz", "integrity": "sha512-6BU7vAjKuMspCy9QQEtbWgmkuXi/yOSZo3ANdvZmNQW8N/WQGjO9cvlcA5EFJaPtp2hL1RAaPGpCXxumijUxCg==", + "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -1989,6 +1990,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -1997,6 +1999,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2006,6 +2009,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -2013,17 +2017,20 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2034,6 +2041,7 @@ "version": "5.11.8", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.8.tgz", "integrity": "sha512-ScyKrWQM5xNcr79PkSewnA79CLaoxVskE+f7knTOhDD9ftZSA1Jw8mj+pneqhEu3x37ncNfW84NUr7lqK+mXjA==", + "dev": true, "requires": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -2049,6 +2057,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -2057,6 +2066,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2066,6 +2076,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -2073,12 +2084,14 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, "requires": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -2088,17 +2101,20 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "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==", + "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -2108,6 +2124,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2118,6 +2135,7 @@ "version": "11.2.2", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.2.tgz", "integrity": "sha512-jaxm0hwUjv+hzC+UFEywic7buDC9JQ1q3cDsrWVSDAPmLotfA6E6kUHlYm/zOeGCac6g48DR36tFHxl7Zb+N5A==", + "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.28.1" @@ -2127,6 +2145,7 @@ "version": "12.6.0", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.6.0.tgz", "integrity": "sha512-FNEH/HLmOk5GO70I52tKjs7WvGYckeE/SrnLX/ip7z2IGbffyd5zOUM1tZ10vsTphqm+VbDFI0oaXu0wcfQsAQ==", + "dev": true, "requires": { "@babel/runtime": "^7.12.5" } @@ -2139,7 +2158,8 @@ "@types/aria-query": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz", - "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==" + "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==", + "dev": true }, "@types/babel__core": { "version": "7.1.12", @@ -2217,7 +2237,8 @@ "@types/history": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", - "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==" + "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==", + "dev": true }, "@types/html-minifier-terser": { "version": "5.1.1", @@ -2249,11 +2270,21 @@ "version": "26.0.19", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", + "dev": true, "requires": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" } }, + "@types/jquery": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.5.tgz", + "integrity": "sha512-6RXU9Xzpc6vxNrS6FPPapN1SxSHgQ336WC6Jj/N8q30OiaBZ00l1GBgeP7usjVZPivSkGUfL1z/WW6TX989M+w==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, "@types/json-schema": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", @@ -2292,7 +2323,8 @@ "@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==" + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true }, "@types/q": { "version": "1.5.4", @@ -2303,6 +2335,7 @@ "version": "16.14.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz", "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==", + "dev": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2312,6 +2345,7 @@ "version": "16.9.10", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz", "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==", + "dev": true, "requires": { "@types/react": "^16" } @@ -2320,6 +2354,7 @@ "version": "5.1.10", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.10.tgz", "integrity": "sha512-yu11Hu16CfGvvBWc7wluRlxbwfuSlY0snEntbbOTvfgMvyO6uLaEpAbnVOntr+9TNIpR++OOlPkmDcJPxOXRaQ==", + "dev": true, "requires": { "@types/history": "*", "@types/react": "*" @@ -2329,6 +2364,7 @@ "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": "*", @@ -2343,10 +2379,17 @@ "@types/node": "*" } }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, "@types/socket.io-client": { "version": "1.4.34", "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", - "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==" + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==", + "dev": true }, "@types/source-list-map": { "version": "0.1.2", @@ -2367,6 +2410,7 @@ "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==", + "dev": true, "requires": { "@types/jest": "*" } @@ -2374,7 +2418,8 @@ "@types/twemoji": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/@types/twemoji/-/twemoji-12.1.1.tgz", - "integrity": "sha512-dW1B1WHTfrWmEzXb/tp8xsZqQHAyMB9JwLwbBqkIQVzmNUI02R7lJqxUpKFM114ygNZHKA1r74oPugCAiYHt1A==" + "integrity": "sha512-dW1B1WHTfrWmEzXb/tp8xsZqQHAyMB9JwLwbBqkIQVzmNUI02R7lJqxUpKFM114ygNZHKA1r74oPugCAiYHt1A==", + "dev": true }, "@types/uglify-js": { "version": "3.11.1", @@ -4598,7 +4643,8 @@ "css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true }, "cssdb": { "version": "4.4.0", @@ -4769,7 +4815,8 @@ "csstype": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==", + "dev": true }, "cyclist": { "version": "1.0.1", @@ -5090,7 +5137,8 @@ "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==" + "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==", + "dev": true }, "dom-converter": { "version": "0.2.0", @@ -9496,6 +9544,11 @@ } } }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9818,7 +9871,8 @@ "lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "dev": true }, "magic-string": { "version": "0.25.7", @@ -9994,7 +10048,8 @@ "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==" + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true }, "mini-create-react-context": { "version": "0.4.1", @@ -12670,6 +12725,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -14279,6 +14335,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, "requires": { "min-indent": "^1.0.0" } diff --git a/simmadome/package.json b/simmadome/package.json index c98a967..104db30 100644 --- a/simmadome/package.json +++ b/simmadome/package.json @@ -4,6 +4,7 @@ "private": true, "proxy": "http://localhost:5000", "dependencies": { + "jquery": "^3.5.1", "react": "^17.0.1", "react-dom": "^17.0.1", "react-router": "^5.2.0", @@ -14,11 +15,12 @@ "typescript": "^4.1.3", "web-vitals": "^0.2.4" }, - "devDependencies" : { + "devDependencies": { "@testing-library/jest-dom": "^5.11.8", "@testing-library/react": "^11.2.2", "@testing-library/user-event": "^12.6.0", "@types/jest": "^26.0.19", + "@types/jquery": "^3.5.5", "@types/node": "^12.19.12", "@types/react": "^16.14.2", "@types/react-dom": "^16.9.10", diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css index e867503..b37ea6e 100644 --- a/simmadome/src/CreateLeague.css +++ b/simmadome/src/CreateLeague.css @@ -1,22 +1,17 @@ -th, td { - border: none; - padding: 0; - height: 100%; -} - -table { - border-collapse: collapse; - height: min-content; -} - -th .cl_subleague_bg { +.cl_table_header > .cl_subleague_bg { border-top-left-radius: 0.5rem; border-top-right-radius: 0.5rem; + padding-top: 1rem; } -tbody tr:last-child .cl_subleague_bg { +.cl_league_structure_table .cl_table_row:last-child .cl_subleague_bg { border-bottom-left-radius: 0.5rem; border-bottom-right-radius: 0.5rem; + padding-bottom: 1rem; +} + +.cl_league_structure_table .cl_table_row:last-child .cl_division_delete { + margin-bottom: 0.5rem; } input { @@ -28,6 +23,10 @@ input { font-size: 14pt; } +input:focus { + outline: none; +} + .cl_league_main { display: flex; flex-direction: column; @@ -57,9 +56,23 @@ input { } .cl_league_structure_table { - margin: 1rem; - margin-left: 0rem; - margin-top: 0rem; + display: table; + margin-right: 1rem; + table-layout: fixed; +} + +.cl_headers, .cl_table_row { + display: table-row; + height: min-content; +} + +.cl_table_header, .cl_delete_filler, .cl_delete_box, .cl_division_cell { + display: table-cell; + height:100%; +} + +.cl_delete_box { + vertical-align: middle; } .cl_league_structure_scrollbox { @@ -92,14 +105,14 @@ input { .cl_subleague_bg { background: var(--background-main); - padding:1rem; - padding-bottom: 0rem; + padding: 0.5rem 1rem; margin: 0rem 0.5rem; - height: 100%; - width: 20rem; + width: 22rem; + height:100%; + box-sizing: border-box; } -.cl_subleague_name, .cl_newteam_name { +.cl_subleague_name { flex-grow: 1; margin-right: 0.5rem; } @@ -109,6 +122,10 @@ input { width: 95%; } +.cl_newteam_name { + width: 95%; +} + .cl_division { display: flex; flex-direction: column; @@ -124,7 +141,7 @@ input { align-items: center; justify-content: space-between; width: 100%; - margin: 0.25rem 0rem; + margin: 0.4rem 0rem; } .cl_team_name { @@ -134,13 +151,38 @@ input { text-overflow: ellipsis; } +.cl_team_add { + display: flex; + flex-direction: column; + margin-bottom: 0rem; +} + +.cl_search_list { + width: 95%; + margin-top: 0.6rem; + padding: 0.5rem; + background: var(--background-tertiary); + border-radius: 0.5rem; +} + +.cl_search_result { + padding: 0.2rem 0.4rem; + border-radius: 0.5rem; +} + +.cl_search_result:hover { + background: var(--background-main); +} + /* button styles */ button > .emoji { margin: 0; + width: 1rem; + height: 1rem; } -.cl_subleague_delete, .cl_team_delete, .cl_division_delete, .cl_subleague_add, .cl_division_add, .cl_newteam_add { +.cl_subleague_delete, .cl_team_delete, .cl_division_delete, .cl_subleague_add, .cl_division_add { padding: 0; width: 2rem; height: 2rem; @@ -155,21 +197,18 @@ button > .emoji { background: var(--accent-red); } -.cl_subleague_add, .cl_division_add, .cl_newteam_add { +.cl_subleague_add, .cl_division_add { background: var(--accent-green); } .cl_subleague_add { - margin-top: 3rem; + position: relative; + top: 1.6rem; } .cl_division_add { - margin: 1.25rem; -} - -.cl_division_delete { - margin-right: 1rem; - margin-top: 1rem; + margin-top: 1.25rem; + margin-bottom: 1.25rem; } .cl_delete_filler { diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index a64c4d8..6a275c1 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -1,6 +1,7 @@ import React, {useState, useRef, useLayoutEffect, useReducer} from 'react'; import './CreateLeague.css'; import twemoji from 'twemoji'; +import $, {getJSON} from 'jquery'; interface LeagueStructureState { subleagues: SubleagueState[] @@ -8,26 +9,19 @@ interface LeagueStructureState { interface SubleagueState { name: string + id: string|number divisions: DivisionState[] } interface DivisionState { name: string + id: string|number teams: TeamState[] } interface TeamState { name: string -} - -let initLeagueStructure = { - subleagues: [0, 1].map((val) => ({ - name: "", - divisions: [0, 1].map((val) => ({ - name: "", - teams: [] - })) - })) + id: string|number } type LeagueReducerActions = @@ -42,6 +36,11 @@ type LeagueReducerActions = type DistributiveOmit = T extends any ? Omit : never; +let getUID = function() { // does NOT generate UUIDs. Meant to create list keys ONLY + let id = 0; + return function() { return id++} +}() + function leagueStructureReducer(state: LeagueStructureState, action: LeagueReducerActions): LeagueStructureState { switch (action.type) { case 'remove_subleague': @@ -49,40 +48,55 @@ function leagueStructureReducer(state: LeagueStructureState, action: LeagueReduc case 'add_subleague': return {subleagues: state.subleagues.concat([{ name: "", + id: getUID(), divisions: arrayOf(state.subleagues[0].divisions.length, i => ({ name: "", + id: getUID(), teams: [] })) }])}; case 'rename_subleague': return replaceSubleague(state, action.subleague_index, subleague => ({ name: action.name, + id: subleague.id, divisions: subleague.divisions })); case 'remove_divisions': return {subleagues: state.subleagues.map(subleague => ({ name: subleague.name, + id: subleague.id, divisions: removeIndex(subleague.divisions, action.division_index) }))}; case 'add_divisions': return {subleagues: state.subleagues.map(subleague => ({ name: subleague.name, - divisions: subleague.divisions.concat([{name: "", teams: []}]) + id: subleague.id, + divisions: subleague.divisions.concat([{ + name: "", + id: getUID(), + teams: [] + }]) }))}; case 'rename_division': return replaceDivision(state, action.subleague_index, action.division_index, division => ({ name: action.name, + id: division.id, teams: division.teams })); case 'remove_team': return replaceDivision(state, action.subleague_index, action.division_index, division => ({ name: division.name, + id: division.id, teams: removeIndex(division.teams, division.teams.findIndex(val => val.name === action.name)) })); case 'add_team': return replaceDivision(state, action.subleague_index, action.division_index, division => ({ name: division.name, - teams: division.teams.concat([{name: action.name}]) + id: division.id, + teams: division.teams.concat([{ + name: action.name, + id: getUID() + }]) })); } } @@ -94,6 +108,7 @@ function replaceSubleague(state: LeagueStructureState, si: number, func: (val: S function replaceDivision(state: LeagueStructureState, si: number, di: number, func:(val: DivisionState) => DivisionState) { return replaceSubleague(state, si, subleague => ({ name: subleague.name, + id: subleague.id, divisions: replaceIndex(subleague.divisions, di, func(subleague.divisions[di])) })) } @@ -118,6 +133,18 @@ function arrayOf(length: number, func: (i: number) => T): T[] { return out; } +let initLeagueStructure = { + subleagues: [0, 1].map((val) => ({ + name: "", + id: getUID(), + divisions: [0, 1].map((val) => ({ + name: "", + id: getUID(), + teams: [] + })) + })) +} + function CreateLeague() { let [name, setName] = useState(""); let [structure, dispatch] = useReducer(leagueStructureReducer, initLeagueStructure); @@ -144,10 +171,10 @@ function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dis
- +
-
+
@@ -158,20 +185,18 @@ function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dis function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { return ( - - - - {props.subleagues.map((subleague, i) => ( - -
- 1} dispatch={action => - props.dispatch(Object.assign({subleague_index: i}, action)) - }/> -
- - ))} - - +
+
+ {props.subleagues.map((subleague, i) => ( +
+
+ 1} dispatch={action => + props.dispatch(Object.assign({subleague_index: i}, action)) + }/> +
+
+ ))} +
); } @@ -187,33 +212,40 @@ function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispa } function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { - return ( - - {props.subleagues[0].divisions.map((val, di) => ( - - - {props.subleagues[0].divisions.length > 1 ? - : - null - } - - {props.subleagues.map((subleague, si) => ( - -
- - props.dispatch(Object.assign({subleague_index: si, division_index: di}, action)) - }/> -
- - ))} - - ))} - - ); + return (<> + {props.subleagues[0].divisions.map((val, di) => ( +
+
+ {props.subleagues[0].divisions.length > 1 ? + : + null + } +
+ {props.subleagues.map((subleague, si) => ( +
+
+ + props.dispatch(Object.assign({subleague_index: si, division_index: di}, action)) + }/> +
+
+ ))} +
+ ))} + ); } function Division(props: {state: DivisionState, dispatch:(action: DistributiveOmit) => void}) { let [newName, setNewName] = useState(""); + let [searchResults, setSearchResults] = useState([]); + let newNameInput = useRef(null); + let resultList = useRef(null); + + useLayoutEffect(() => { + if (resultList.current) { + twemoji.parse(resultList.current) + } + }) return (
@@ -221,18 +253,36 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm props.dispatch({type: 'rename_division', name: e.target.value}) }/> {props.state.teams.map((team, i) => ( -
+
{team.name}
))}
- setNewName(e.target.value)}/> - + { + let params = new URLSearchParams({query: e.target.value, page_len: '5', page_num: '0'}); + $.getJSON("/api/teams/search?" + params.toString(), data => { + console.log(data); + setSearchResults(data); + }) + setNewName(e.target.value); + }}/>
+ {searchResults.length > 0 && newName.length > 0 ? + (
+ {searchResults.map(result => +
{ + props.dispatch({type:'add_team', name: result}); + setNewName(""); + if (newNameInput.current) { + newNameInput.current.focus(); + } + }}>{result}
+ )} +
): +
+ }
); } @@ -240,9 +290,7 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm function LeagueOptions() { return (
-
- -
+
); } diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index 21bd0f7..7d7b6d2 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -7,20 +7,24 @@ import GamePage from './GamePage'; import CreateLeague from './CreateLeague'; import discordlogo from "./img/discord.png"; import reportWebVitals from './reportWebVitals'; +import $ from 'jquery' + +$(document).ready(function() { + ReactDOM.render( + + +
+ + + + + + + , + document.getElementById('root') + ); +}); -ReactDOM.render( - - -
- - - - - - - , - document.getElementById('root') -); function Header() { return ( From 31930aab637643d6a80dea31f314ae798bfa2807 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Mon, 11 Jan 2021 06:17:14 -0500 Subject: [PATCH 12/78] this should add all the infrastructure needed to run a league's games (and only *run* them, no data yet). untested --- leagues.py | 170 +++++++++++++++++++++++++++++++++++++++++++++--- the_prestige.py | 161 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 321 insertions(+), 10 deletions(-) diff --git a/leagues.py b/leagues.py index 7d3eedc..d194bed 100644 --- a/leagues.py +++ b/leagues.py @@ -1,4 +1,5 @@ import time, asyncio, jsonpickle, random, math +from itertools import chain from games import team, game from discord import Embed, Color import database as db @@ -7,13 +8,165 @@ import database as db -class league(object): - def __init__(self, name, subleagues_dic): - self.subleagues = {} #key: name, value: [divisions] - self.max_days +class league_structure(object): + def __init__(self, name, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): + self.league = league_dic #key: subleague, value: {division, teams} + self.constraints = { + "division_games" : division_games, + "inter_div_games" : inter_division_games, + "inter_league_games" : inter_league_games + } + self.season_length = 0 self.day = 1 self.name = name - self.subleagues = subleagues_dic + self.schedule = {} + self.series_length = 3 #can be changed + self.game_length = None + self.active = False + self.games_per_hour = games_per_hour + + def last_series_check(self): + return day + 1 in self.schedule.keys() + + def find_team(self, team_name): + for subleague in iter(self.league.keys()): + for division in iter(self.league[subleague].keys()): + if team_name in self.league[subleague][division]: + return (subleague, division) + + def teams_in_league(self): + teams = [] + for division in self.league.values(): + for teams_list in division.values(): + teams += teams_list + return teams + + def teams_in_subleague(self, subleague_name): + teams = [] + if subleague_name in self.league.keys(): + for division_list in self.league[subleague_name].values(): + teams += division_list + return teams + else: + print("League not found.") + return None + + def teams_in_division(self, subleague_name, division_name): + if subleague_name in self.league.keys() and division_name in self.league[subleague_name].keys(): + return self.league[subleague_name][division_name] + else: + print("Division in that league not found.") + return None + + def make_matchups(self): + matchups = [] + batch_subleagues = [] #each sub-array is all teams in each subleague + subleague_max = 1 + for subleague in self.league.keys(): + teams = self.teams_in_subleague(subleague) + if subleague_max < len(teams): + subleague_max = len(teams) + batch_subleagues.append(teams) + + for subleague in batch_subleagues: + while len(subleague) < subleague_max: + subleague.append("OFF") + + for i in range(0, self.constraints["inter_league_games"]): #generates inter-league matchups + unmatched_indices = [i for i in range(0, len(batch_subleagues))] + for subleague_index in range(0, len(batch_subleagues)): + if subleague_index in unmatched_indices: + unmatched_indices.pop(unmatched_indices.index(subleague_index)) + match_with_index = random.choice(unmatched_indices) + unmatched_indices.pop(unmatched_indices.index(match_with_index)) + league_a = batch_subleagues[subleague_index].copy() + league_b = batch_subleagues[match_with_index].copy() + random.shuffle(league_a) + random.shuffle(league_b) + a_home = True + for team_a, team_b in zip(league_a, league_b): + if a_home: + matchups.append([team_b, team_a]) + else: + matchups.append([team_a, team_b]) + a_home != a_home + + for i in range(0, self.constraints["inter_div_games"]): #inter-division matchups + for subleague in self.league.keys(): + division_max = 1 + divisions = [] + for div in self.league[subleague].keys(): + if division_max < len(self.league[subleague][div]): + divison_max = len(self.league[subleague][div]) + divisions.append(self.league[subleague][div]) + + last_div = None + if len(divisions) % 2 != 0: + if division_max % 2 != 0: + divisions.append(["OFF" for i in range(0, division_max)]) + else: + last_div = divisions.pop + + divs_a = list(chain(divisions[int(len(divisions)/2):]))[0] + if last_div is not None: + divs_a.extend(last_div[int(len(last_div)/2):]) + random.shuffle(divs_a) + + divs_b = list(chain(divisions[:int(len(divisions)/2)]))[0] + if last_div is not None: + divs_a.extend(last_div[:int(len(last_div)/2)]) + random.shuffle(divs_b) + + a_home = True + for team_a, team_b in zip(divs_a, divs_b): + if a_home: + matchups.append([team_b, team_a]) + else: + matchups.append([team_a, team_b]) + a_home != a_home + + self.season_length = self.constraints["division_games"]*(division_max) + self.constraints["inter_div_games"] + self.constraints["inter_league_games"] + + for subleague in self.league.keys(): + for division in self.league[subleague].values(): #generate round-robin matchups + if len(division) % 2 != 0: + division.append("OFF") + + for i in range(0, len(division)-1): + teams_a = division[int(len(division)/2):] + teams_b = division[:int(len(division)/2)] + teams_b.reverse() + + for team_a, team_b in zip(teams_a, teams_b): + for j in range(0, self.constraints["division_games"]): + if i % 2 == 0: + matchups.append([team_b, team_a]) + else: + matchups.append([team_a, team_b]) + + division.insert(1, division.pop()) + return matchups + + def generate_schedule(self): + matchups = self.make_matchups() + random.shuffle(matchups) + for game in matchups: + scheduled = False + day = 1 + while not scheduled: + found = False + if day in self.schedule.keys(): + for game_on_day in self.schedule[day]: + for team in game: + if team in game_on_day: + found = True + if not found: + self.schedule[day].append(game) + scheduled = True + else: + self.schedule[day] = [game] + scheduled = True + day += 1 class division(object): def __init__(self): @@ -40,7 +193,7 @@ class tournament(object): self.id = id - def build_bracket(self, random_sort = False, by_wins = False): + def build_bracket(self, random_sort = False, by_wins = False, manual = False): teams_list = list(self.teams.keys()).copy() if random_sort: @@ -54,8 +207,9 @@ class tournament(object): else: #sort by average stars def sorter(team_in_list): return team_in_list.average_stars() - - teams_list.sort(key=sorter, reverse=True) + + if not manual: + teams_list.sort(key=sorter, reverse=True) bracket_layers = int(math.ceil(math.log(len(teams_list), 2))) diff --git a/the_prestige.py b/the_prestige.py index 9df36cf..c4c8804 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1,7 +1,6 @@ -import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues +import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime import database as db import onomancer as ono -import random from the_draft import Draft, DRAFT_ROUNDS from flask import Flask from uuid import uuid4 @@ -757,6 +756,7 @@ commands = [ client = discord.Client() gamesarray = [] active_tournaments = [] +active_leagues = [] setupmessages = {} thread1 = threading.Thread(target=main_controller.update_loop) @@ -1382,4 +1382,161 @@ def get_team_fuzzy_search(team_name): team = teams[0] return team +async def start_league_day(channel, league): + current_games = [] + if league.schedule is {}: + league.generate_schedule() + + games_to_start = league.schedule[math.ceil(league.day/league.series_length)] + if league.game_length is None: + game_length = games.config()["default_length"] + else: + game_length = league.game_length + + for pair in games_to_start: + if pair[0] is not None and pair[1] is not None: + this_game = games.game(pair[0].prepare_for_save().finalize(), pair[1].prepare_for_save().finalize(), length = game_length) + this_game, state_init = prepare_game(this_game) + + state_init["is_league"] = True + series_string = f"Series score:" + state_init["title"] = f"{series_string} 0 - 0" + discrim_string = league.name + + id = str(uuid4()) + current_games.append((this_game, id)) + main_controller.master_games_dic[id] = (this_game, state_init, discrim_string) + + ext = "?league=" + urllib.parse.quote_plus(league.name) + + if league.last_series_check(): #if finals + await channel.send(f"The final series of the {league.name} is starting now, at {config()['simmadome_url']+ext}") + last = True + + else: + await channel.send(f"The next series of the {league.name} is starting now, at {config()['simmadome_url']+ext}") + last = False + + await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, last) + + +async def league_day_watcher(channel, league, games_list, filter_url, last = False): + league.active = True + active_leagues.append(league) + wins_in_series = {} + losses_in_series = {} + + while league.active: + queued_games = [] + while len(games_list) > 0: + try: + for i in range(0, len(games_list)): + game, key = games_list[i] + if game.over and main_controller.master_games_dic[key][1]["end_delay"] <= 8: + if game.teams['home'].name not in wins_in_series.keys(): + wins_in_series[game.teams["home"].name] = 0 + if game.teams['home'].name not in losses_in_series.keys(): + losses_in_series[game.teams["home"].name] = 0 + if game.teams['away'].name not in wins_in_series.keys(): + wins_in_series[game.teams["away"].name] = 0 + if game.teams['away'].name not in losses_in_series.keys(): + losses_in_series[game.teams["away"].name] = 0 + + winner_name = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name + loser_name = game.teams['away'].name if game.teams['home'].score > game.teams['away'].score else game.teams['home'].name + + wins_in_series[winner_name] += 1 + losses_in_series[loser_name] += 1 + + final_embed = game_over_embed(game) + await channel.send(f"A {league.name} game just ended!") + await channel.send(embed=final_embed) + if wins_in_series[winner_name] + losses_in_series[winner_name] < league.series_length: + queued_games.append(game) + games_list.pop(i) + break + except: + print("something went wrong in league_day_watcher") + await asyncio.sleep(4) + + + if len(queued_games) > 0: + + now = datetime.datetime.now() + + validminutes = [int((60 * div)/league.games_per_hour) for div in range(0,league.games_per_hour)] + for i in range(0, len(validminutes)): + if now.minute > validminutes[i]: + if i < len(validminutes)-1: + delta = datetime.timedelta(minutes= (validminutes[i+1] - now.minute)) + else: + delta = datetime.timedelta(minutes= (60 - now.minute)) + + next_start = (now + delta).replace(seconds=0, microsecond=0) + wait_seconds = (next_start - now).seconds + + + await channel.send(f"The next batch of games for the {league.name} will start in {int(wait_seconds/60)} minutes.") + await asyncio.sleep(wait_seconds) + await channel.send(f"A {league.name} series is continuing now at {filter_url}") + games_list = await continue_league_series(league, queued_games, games_list, wins_in_series) + else: + league.active = False + + if last: #if this series was the last + #needs some kind of notification that it's over here + active_leagues.pop(active_leagues.index(league)) + return + + now = datetime.datetime.now() + + validminutes = [int((60 * div)/league.games_per_hour) for div in range(0,league.games_per_hour)] + for i in range(0, len(validminutes)): + if now.minute > validminutes[i]: + if i < len(validminutes)-1: + delta = datetime.timedelta(minutes= (validminutes[i+1] - now.minute)) + else: + delta = datetime.timedelta(minutes= (60 - now.minute)) + + next_start = (now + delta).replace(seconds=0, microsecond=0) + wait_seconds = (next_start - now).seconds + + await channel.send(f"""This {league.name} series is now complete! The next series will be starting in {int(wait_seconds/60)} minutes.""") + await asyncio.sleep(wait_seconds) + league.day += 1 + await start_league_day(channel, league) + +async def continue_league_series(tourney, queue, games_list, wins_in_series): + for oldgame in queue: + away_team = games.get_team(oldgame.teams["away"].name) + home_team = games.get_team(oldgame.teams["home"].name) + this_game = games.game(away_team.finalize(), home_team.finalize(), length = tourney.game_length) + this_game, state_init = prepare_game(this_game) + + state_init["is_league"] = True + series_string = f"Series score:" + state_init["title"] = f"{series_string} {wins_in_series[away_team.name]} - {wins_in_series[home_team.name]}" + discrim_string = league.name + + id = str(uuid4()) + games_list.append((this_game, id)) + main_controller.master_games_dic[id] = (this_game, state_init, discrim_string) + + return games_list + + +league = leagues.league_structure("test", { + "nL" : { + "nL west" : ["a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1"], + "nL east" : ["a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2"] + }, + "aL" : { + "aL west" : ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "aL east" : ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"] + } +}, division_games=6, inter_division_games=3, inter_league_games=3) +league.generate_schedule() +#print(league.schedule[2]) + + client.run(config()["token"]) From df09a2cf97f0e5b1ddaa7f733f94219d3cfe2071 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Mon, 11 Jan 2021 06:36:13 -0500 Subject: [PATCH 13/78] added standings to league object and began collecting them from prestige.py --- leagues.py | 18 ++++++++++-------- the_prestige.py | 5 +++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/leagues.py b/leagues.py index d194bed..ffa532e 100644 --- a/leagues.py +++ b/leagues.py @@ -10,13 +10,12 @@ import database as db class league_structure(object): def __init__(self, name, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): - self.league = league_dic #key: subleague, value: {division, teams} + self.league = league_dic #key: subleague, value: {division : teams} self.constraints = { "division_games" : division_games, "inter_div_games" : inter_division_games, "inter_league_games" : inter_league_games } - self.season_length = 0 self.day = 1 self.name = name self.schedule = {} @@ -24,6 +23,14 @@ class league_structure(object): self.game_length = None self.active = False self.games_per_hour = games_per_hour + self.standings = {} + + for this_team in self.teams_in_league(): + self.standings[this_team.name] = { + "wins" : 0, + "losses" : 0, + "run differential" : 0, + } def last_series_check(self): return day + 1 in self.schedule.keys() @@ -125,7 +132,6 @@ class league_structure(object): matchups.append([team_a, team_b]) a_home != a_home - self.season_length = self.constraints["division_games"]*(division_max) + self.constraints["inter_div_games"] + self.constraints["inter_league_games"] for subleague in self.league.keys(): for division in self.league[subleague].values(): #generate round-robin matchups @@ -168,14 +174,10 @@ class league_structure(object): scheduled = True day += 1 -class division(object): - def __init__(self): - self.teams = {} #key: team object, value: {wins; rd (run diff)} - class tournament(object): def __init__(self, name, team_dic, series_length = 5, finals_series_length = 7, max_innings = 9, id = None, secs_between_games = 300, secs_between_rounds = 600): self.name = name - self.teams = team_dic #same format as division, wins/losses will be used for seeding later + self.teams = team_dic #key: team object, value: wins self.bracket = None self.results = None self.series_length = series_length diff --git a/the_prestige.py b/the_prestige.py index c4c8804..29ddc51 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1444,9 +1444,14 @@ async def league_day_watcher(channel, league, games_list, filter_url, last = Fal winner_name = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name loser_name = game.teams['away'].name if game.teams['home'].score > game.teams['away'].score else game.teams['home'].name + rd = int(math.fabs(game.teams['home'].score - game.teams['away'].score)) wins_in_series[winner_name] += 1 + league.standings[winner_name]["wins"] += 1 + league.standings[winner_name]["run differential"] += rd losses_in_series[loser_name] += 1 + league.standings[loser_name]["losses"] += 1 + league.standings[loser_name]["run differential"] -= rd final_embed = game_over_embed(game) await channel.send(f"A {league.name} game just ended!") From 74c9da684f0ace4cfeb7dbfd7c926729575e0c37 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Mon, 11 Jan 2021 14:14:54 -0500 Subject: [PATCH 14/78] change to using fetch over jquery --- simmadome/src/CreateLeague.css | 1 - simmadome/src/CreateLeague.tsx | 8 +++----- simmadome/src/index.tsx | 29 +++++++++++++---------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css index b37ea6e..5d6971b 100644 --- a/simmadome/src/CreateLeague.css +++ b/simmadome/src/CreateLeague.css @@ -58,7 +58,6 @@ input:focus { .cl_league_structure_table { display: table; margin-right: 1rem; - table-layout: fixed; } .cl_headers, .cl_table_row { diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index 6a275c1..718c0bf 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -1,7 +1,6 @@ import React, {useState, useRef, useLayoutEffect, useReducer} from 'react'; import './CreateLeague.css'; import twemoji from 'twemoji'; -import $, {getJSON} from 'jquery'; interface LeagueStructureState { subleagues: SubleagueState[] @@ -262,10 +261,9 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm { let params = new URLSearchParams({query: e.target.value, page_len: '5', page_num: '0'}); - $.getJSON("/api/teams/search?" + params.toString(), data => { - console.log(data); - setSearchResults(data); - }) + fetch("/api/teams/search?" + params.toString()) + .then(response => response.json()) + .then(data => setSearchResults(data)); setNewName(e.target.value); }}/>
diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index 7d7b6d2..4f7e32a 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -7,23 +7,20 @@ import GamePage from './GamePage'; import CreateLeague from './CreateLeague'; import discordlogo from "./img/discord.png"; import reportWebVitals from './reportWebVitals'; -import $ from 'jquery' -$(document).ready(function() { - ReactDOM.render( - - -
- - - - - - - , - document.getElementById('root') - ); -}); +ReactDOM.render( + + +
+ + + + + + + , + document.getElementById('root') +); function Header() { From 1337df4af3227bf921280a92d4577a1187306b62 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Mon, 11 Jan 2021 16:11:35 -0500 Subject: [PATCH 15/78] fix weird gap --- simmadome/src/CreateLeague.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index 718c0bf..5751f78 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -248,9 +248,11 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm return (
- - props.dispatch({type: 'rename_division', name: e.target.value}) - }/> +
+ + props.dispatch({type: 'rename_division', name: e.target.value}) + }/> +
{props.state.teams.map((team, i) => (
{team.name}
From 39e30c38114751e1a00c203543167078d425abf2 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Tue, 12 Jan 2021 03:17:02 -0500 Subject: [PATCH 16/78] finish league create page --- simmadome/src/CreateLeague.css | 94 +++++++++- simmadome/src/CreateLeague.tsx | 324 ++++++++++++++++++++++++--------- 2 files changed, 324 insertions(+), 94 deletions(-) diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css index 5d6971b..58c3e36 100644 --- a/simmadome/src/CreateLeague.css +++ b/simmadome/src/CreateLeague.css @@ -27,6 +27,16 @@ input:focus { outline: none; } +input[type="number"] { + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; +} + .cl_league_main { display: flex; flex-direction: column; @@ -36,7 +46,7 @@ input:focus { } .cl_league_name { - margin: 1rem; + margin-top: 1rem; } .cl_league_options, .cl_league_structure { @@ -48,6 +58,10 @@ input:focus { padding-top: 1.5rem; } +.cl_league_options { + align-items: center; +} + .cl_league_structure, .cl_subleague_add_align { display: flex; align-items: center; @@ -55,6 +69,10 @@ input:focus { width: min-content; } +.cl_league_structure { + margin-top: 1rem; +} + .cl_league_structure_table { display: table; margin-right: 1rem; @@ -106,8 +124,8 @@ input:focus { background: var(--background-main); padding: 0.5rem 1rem; margin: 0rem 0.5rem; - width: 22rem; - height:100%; + min-width: 22rem; + height: 100%; box-sizing: border-box; } @@ -116,6 +134,10 @@ input:focus { margin-right: 0.5rem; } +.cl_division_name_box { + width: 100%; +} + .cl_division_name { margin-bottom: 0.5rem; width: 95%; @@ -145,7 +167,7 @@ input:focus { .cl_team_name { font-size: 14pt; - padding-right: 0.5rem; + padding: 0 0.5rem; overflow: hidden; text-overflow: ellipsis; } @@ -173,6 +195,58 @@ input:focus { background: var(--background-main); } +.cl_league_options { + padding: 1rem; + margin-top: 1.5rem; + width: 55rem; + box-sizing: border-box; +} + +.cl_option_main { + display: flex; + flex-direction: row; + justify-content: space-around; + width: 100%; +} + +.cl_option_submit_box { + display: flex; + flex-direction: column; + align-items: center; +} + +.cl_option_box { + margin: 1rem; + width: max-content; +} + +.cl_option_label, .cl_option_err, .cl_structure_err { + margin: 0.25rem; +} + +.cl_option_err, .cl_structure_err { + color: var(--accent-red); +} + +.cl_option_err { + min-height: 1.5rem; + margin-bottom: -0.5rem; + margin-top: 0.5rem; +} + +.cl_structure_err { + margin-bottom: -0.5rem; +} + +.cl_structure_err_div { + margin-top: -0.5rem; + margin-bottom: 0; +} + +.cl_structure_err_teams { + width: 98%; +} + /* button styles */ button > .emoji { @@ -212,4 +286,16 @@ button > .emoji { .cl_delete_filler { min-width: 3rem; +} + +.cl_option_submit { + padding: 1rem 2rem; + height: 2rem; + border: none; + border-radius: 0.75rem; + display: flex; + align-items: center; + justify-content: center; + background: var(--accent-green); + font-size: 14pt; } \ No newline at end of file diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index 5751f78..f0e4df6 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -2,28 +2,66 @@ import React, {useState, useRef, useLayoutEffect, useReducer} from 'react'; import './CreateLeague.css'; import twemoji from 'twemoji'; -interface LeagueStructureState { +// STATE CLASSES + +class LeagueStructureState { subleagues: SubleagueState[] + + constructor(subleagues: SubleagueState[] = []) { + this.subleagues = subleagues; + } } -interface SubleagueState { +class SubleagueState { name: string - id: string|number divisions: DivisionState[] + id: string|number + + constructor(divisions: DivisionState[] = []) { + this.name = ""; + this.divisions = divisions; + this.id = getUID(); + } } -interface DivisionState { +class DivisionState { name: string - id: string|number teams: TeamState[] + id: string|number + + constructor() { + this.name = ""; + this.teams = []; + this.id = getUID(); + } } -interface TeamState { +class TeamState { name: string id: string|number + + constructor(name: string = "") { + this.name = name; + this.id = getUID(); + } } -type LeagueReducerActions = +let getUID = function() { // does NOT generate UUIDs. Meant to create list keys ONLY + let id = 0; + return function() { return id++ } +}() + +let initLeagueStructure = { + subleagues: [0, 1].map((val) => + new SubleagueState([0, 1].map((val) => + new DivisionState() + )) + ) +}; + +// STRUCTURE REDUCER + +type StructureReducerActions = {type: 'remove_subleague', subleague_index: number} | {type: 'add_subleague'} | {type: 'rename_subleague', subleague_index: number, name: string} | @@ -33,70 +71,52 @@ type LeagueReducerActions = {type: 'remove_team', subleague_index: number, division_index: number, name:string} | {type: 'add_team', subleague_index:number, division_index:number, name:string} -type DistributiveOmit = T extends any ? Omit : never; - -let getUID = function() { // does NOT generate UUIDs. Meant to create list keys ONLY - let id = 0; - return function() { return id++} -}() - -function leagueStructureReducer(state: LeagueStructureState, action: LeagueReducerActions): LeagueStructureState { +function leagueStructureReducer(state: LeagueStructureState, action: StructureReducerActions): LeagueStructureState { switch (action.type) { case 'remove_subleague': return {subleagues: removeIndex(state.subleagues, action.subleague_index)}; case 'add_subleague': - return {subleagues: state.subleagues.concat([{ - name: "", - id: getUID(), - divisions: arrayOf(state.subleagues[0].divisions.length, i => ({ - name: "", - id: getUID(), - teams: [] - })) - }])}; + return {subleagues: append(state.subleagues, new SubleagueState( + arrayOf(state.subleagues[0].divisions.length, i => + new DivisionState() + ) + ))} case 'rename_subleague': - return replaceSubleague(state, action.subleague_index, subleague => ({ - name: action.name, - id: subleague.id, - divisions: subleague.divisions - })); + return replaceSubleague(state, action.subleague_index, subleague => { + let nSubleague = shallowClone(subleague); + nSubleague.name = action.name; + return nSubleague; + }); case 'remove_divisions': - return {subleagues: state.subleagues.map(subleague => ({ - name: subleague.name, - id: subleague.id, - divisions: removeIndex(subleague.divisions, action.division_index) - }))}; + return {subleagues: state.subleagues.map(subleague => { + let nSubleague = shallowClone(subleague); + nSubleague.divisions = removeIndex(subleague.divisions, action.division_index) + return nSubleague; + })}; case 'add_divisions': - return {subleagues: state.subleagues.map(subleague => ({ - name: subleague.name, - id: subleague.id, - divisions: subleague.divisions.concat([{ - name: "", - id: getUID(), - teams: [] - }]) - }))}; + return {subleagues: state.subleagues.map(subleague => { + let nSubleague = shallowClone(subleague); + nSubleague.divisions = append(subleague.divisions, new DivisionState()) + return nSubleague; + })}; case 'rename_division': - return replaceDivision(state, action.subleague_index, action.division_index, division => ({ - name: action.name, - id: division.id, - teams: division.teams - })); + return replaceDivision(state, action.subleague_index, action.division_index, division => { + let nDivision = shallowClone(division); + nDivision.name = action.name; + return nDivision; + }); case 'remove_team': - return replaceDivision(state, action.subleague_index, action.division_index, division => ({ - name: division.name, - id: division.id, - teams: removeIndex(division.teams, division.teams.findIndex(val => val.name === action.name)) - })); + return replaceDivision(state, action.subleague_index, action.division_index, division => { + let nDivision = shallowClone(division); + nDivision.teams = removeIndex(division.teams, division.teams.findIndex(val => val.name === action.name)); + return nDivision; + }); case 'add_team': - return replaceDivision(state, action.subleague_index, action.division_index, division => ({ - name: division.name, - id: division.id, - teams: division.teams.concat([{ - name: action.name, - id: getUID() - }]) - })); + return replaceDivision(state, action.subleague_index, action.division_index, division => { + let nDivision = shallowClone(division); + nDivision.teams = append(division.teams, new TeamState(action.name)); + return nDivision; + }); } } @@ -105,13 +125,15 @@ function replaceSubleague(state: LeagueStructureState, si: number, func: (val: S } function replaceDivision(state: LeagueStructureState, si: number, di: number, func:(val: DivisionState) => DivisionState) { - return replaceSubleague(state, si, subleague => ({ - name: subleague.name, - id: subleague.id, - divisions: replaceIndex(subleague.divisions, di, func(subleague.divisions[di])) - })) + return replaceSubleague(state, si, subleague => { + let nSubleague = shallowClone(subleague); + nSubleague.divisions = replaceIndex(subleague.divisions, di, func(subleague.divisions[di])); + return nSubleague; + }); } +// UTIL + function removeIndex(arr: any[], index: number) { return arr.slice(0, index).concat(arr.slice(index+1)); } @@ -132,21 +154,22 @@ function arrayOf(length: number, func: (i: number) => T): T[] { return out; } -let initLeagueStructure = { - subleagues: [0, 1].map((val) => ({ - name: "", - id: getUID(), - divisions: [0, 1].map((val) => ({ - name: "", - id: getUID(), - teams: [] - })) - })) +function shallowClone(obj: T): T { + return Object.assign({}, obj); } +type DistributiveOmit = T extends any ? Omit : never; + +// CREATE LEAGUE + function CreateLeague() { let [name, setName] = useState(""); + let [showError, setShowError] = useState(false); let [structure, dispatch] = useReducer(leagueStructureReducer, initLeagueStructure); + let gamesSeries = useState('3'); + let seriesDivisionOpp = useState('8'); + let seriesInterDivision = useState('16'); + let seriesInterLeague = useState('8'); let self = useRef(null) @@ -159,30 +182,115 @@ function CreateLeague() { return (
setName(e.target.value)}/> - - +
{name === "" && showError ? "A name is required." : ""}
+ +
+ +
+ +
{ + !validRequest(name, structure, gamesSeries[0], seriesDivisionOpp[0], seriesInterDivision[0], seriesInterLeague[0]) && showError ? + "Cannot create league. Some information is invalid." : "" + }
+
+
); } -function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dispatch}) { +function makeRequest( + name:string, + structure: LeagueStructureState, + gamesPerSeries: string, + divisionSeries: string, + interDivisionSeries: string, + interLeagueSeries: string + ) { + + if (!validRequest(name, structure, gamesPerSeries, divisionSeries, interDivisionSeries, interLeagueSeries)) { + return null + } + + return ({ + structure: { + name: name, + subleagues: structure.subleagues.map(subleague => ({ + name: subleague.name, + divisions: subleague.divisions.map(division => ({ + name: division.name, + teams: division.teams + })) + })) + }, + games_per_series: Number(gamesPerSeries), + division_series: Number(divisionSeries), + inter_division_series: Number(interDivisionSeries), + inter_league_series: Number(interLeagueSeries) + }); +} + +function validRequest( + name:string, + structure: LeagueStructureState, + gamesPerSeries: string, + divisionSeries: string, + interDivisionSeries: string, + interLeagueSeries: string + ) { + + return ( + name !== "" && + validNumber(gamesPerSeries) && + validNumber(divisionSeries) && + validNumber(interDivisionSeries) && + validNumber(interLeagueSeries) && + structure.subleagues.length % 2 === 0 && + structure.subleagues.every(subleague => + subleague.name !== "" && + subleague.divisions.every(division => + division.name !== "" && + division.teams.length >= 2 + ) + ) + ) +} + +function validNumber(value: string) { + return Number(value) !== NaN && Number(value) > 0 +} + +// LEAGUE STRUCUTRE + +function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dispatch, showError: boolean}) { return (
- - + +
+
{props.state.subleagues.length % 2 !== 0 && props.showError ? "Must have an even number of subleagues." : ""}
); } -function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { +function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React.Dispatch, showError:boolean}) { return (
@@ -192,6 +300,7 @@ function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React. 1} dispatch={action => props.dispatch(Object.assign({subleague_index: i}, action)) }/> +
{subleague.name === "" && props.showError ? "A name is required." : ""}
))} @@ -199,7 +308,7 @@ function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React. ); } -function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispatch:(action: DistributiveOmit) => void}) { +function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispatch:(action: DistributiveOmit) => void}) { return (
@@ -210,7 +319,7 @@ function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispa ); } -function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch}) { +function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch, showError: boolean}) { return (<> {props.subleagues[0].divisions.map((val, di) => (
@@ -225,7 +334,7 @@ function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatc
props.dispatch(Object.assign({subleague_index: si, division_index: di}, action)) - }/> + } showError={props.showError}/>
))} @@ -234,7 +343,7 @@ function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatc ); } -function Division(props: {state: DivisionState, dispatch:(action: DistributiveOmit) => void}) { +function Division(props: {state: DivisionState, dispatch:(action: DistributiveOmit) => void, showError:boolean}) { let [newName, setNewName] = useState(""); let [searchResults, setSearchResults] = useState([]); let newNameInput = useRef(null); @@ -248,10 +357,11 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm return (
-
+
props.dispatch({type: 'rename_division', name: e.target.value}) }/> +
{props.state.name === "" && props.showError ? "A name is required." : ""}
{props.state.teams.map((team, i) => (
@@ -283,14 +393,48 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm
):
} +
{props.state.teams.length < 2 && props.showError ? "Must have at least 2 teams." : ""}
); } -function LeagueOptions() { - return ( -
+// LEAGUE OPTIONS +type StateBundle = [T, React.Dispatch>] + +function LeagueOptions(props: { + gamesSeries: StateBundle, + seriesDivisionOpp: StateBundle, + seriesInterDivision: StateBundle, + seriesInterLeague: StateBundle, + showError: boolean + }) { + + let [nGamesSeries, setGamesSeries] = props.gamesSeries; + let [nSeriesDivisionOpp, setSeriesDivisionOpp] = props.seriesDivisionOpp; + let [nSeriesInterDivision, setSeriesInterDivision] = props.seriesInterDivision; + let [nSeriesInterLeague, setSeriesInterLeague] = props.seriesInterLeague; + + return ( +
+
+ + +
+
+ + +
+
+ ); +} + +function NumberInput(props: {title: string, value: string, setValue: (newVal: string) => void, showError: boolean}) { + return ( +
+
{props.title}
+ props.setValue(e.target.value)}/> +
{(Number(props.value) === NaN || Number(props.value) < 0) && props.showError ? "Must be a number greater than 0" : ""}
); } From ab488c331a67a76e31d31a36a94f205610bc9f1e Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Tue, 12 Jan 2021 13:16:31 -0500 Subject: [PATCH 17/78] add more option fields --- simmadome/src/CreateLeague.tsx | 154 +++++++++++++++++++-------------- 1 file changed, 88 insertions(+), 66 deletions(-) diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index f0e4df6..b64ce1e 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -51,14 +51,6 @@ let getUID = function() { // does NOT generate UUIDs. Meant to create list keys return function() { return id++ } }() -let initLeagueStructure = { - subleagues: [0, 1].map((val) => - new SubleagueState([0, 1].map((val) => - new DivisionState() - )) - ) -}; - // STRUCTURE REDUCER type StructureReducerActions = @@ -132,6 +124,50 @@ function replaceDivision(state: LeagueStructureState, si: number, di: number, fu }); } +// OPTIONS REDUCER + +class LeagueOptionsState { + games_series = "3" + intra_division_series = "8" + inter_division_series = "16" + inter_league_series = "8" + top_postseason = "1" + wildcards = "0" +} + +type OptionsReducerActions = + {type: 'set_games_series', value: string} | + {type: 'set_intra_division_series', value: string} | + {type: 'set_inter_division_series', value: string} | + {type: 'set_inter_league_series', value: string} | + {type: 'set_top_postseason', value: string} | + {type: 'set_wildcards', value: string} + +function LeagueOptionsReducer(state: LeagueOptionsState, action: OptionsReducerActions) { + let newState = shallowClone(state); + switch (action.type) { + case 'set_games_series': + newState.games_series = action.value; + break; + case 'set_intra_division_series': + newState.intra_division_series = action.value; + break; + case 'set_inter_division_series': + newState.inter_division_series = action.value; + break; + case 'set_inter_league_series': + newState.inter_league_series = action.value; + break; + case 'set_top_postseason': + newState.top_postseason = action.value; + break; + case 'set_wildcards': + newState.wildcards = action.value; + break; + } + return newState +} + // UTIL function removeIndex(arr: any[], index: number) { @@ -159,17 +195,23 @@ function shallowClone(obj: T): T { } type DistributiveOmit = T extends any ? Omit : never; +type DistributivePick = T extends any ? Pick : never; // CREATE LEAGUE +let initLeagueStructure = { + subleagues: [0, 1].map((val) => + new SubleagueState([0, 1].map((val) => + new DivisionState() + )) + ) +}; + function CreateLeague() { let [name, setName] = useState(""); let [showError, setShowError] = useState(false); - let [structure, dispatch] = useReducer(leagueStructureReducer, initLeagueStructure); - let gamesSeries = useState('3'); - let seriesDivisionOpp = useState('8'); - let seriesInterDivision = useState('16'); - let seriesInterLeague = useState('8'); + let [structure, structureDispatch] = useReducer(leagueStructureReducer, initLeagueStructure); + let [options, optionsDispatch] = useReducer(LeagueOptionsReducer, new LeagueOptionsState()); let self = useRef(null) @@ -183,25 +225,19 @@ function CreateLeague() {
setName(e.target.value)}/>
{name === "" && showError ? "A name is required." : ""}
- +
- +
{ - !validRequest(name, structure, gamesSeries[0], seriesDivisionOpp[0], seriesInterDivision[0], seriesInterLeague[0]) && showError ? - "Cannot create league. Some information is invalid." : "" + !validRequest(name, structure, options) && showError ? + "Cannot create league. Some information is missing or invalid." : "" }
@@ -209,16 +245,9 @@ function CreateLeague() { ); } -function makeRequest( - name:string, - structure: LeagueStructureState, - gamesPerSeries: string, - divisionSeries: string, - interDivisionSeries: string, - interLeagueSeries: string - ) { +function makeRequest(name:string, structure: LeagueStructureState, options:LeagueOptionsState) { - if (!validRequest(name, structure, gamesPerSeries, divisionSeries, interDivisionSeries, interLeagueSeries)) { + if (!validRequest(name, structure, options)) { return null } @@ -233,28 +262,25 @@ function makeRequest( })) })) }, - games_per_series: Number(gamesPerSeries), - division_series: Number(divisionSeries), - inter_division_series: Number(interDivisionSeries), - inter_league_series: Number(interLeagueSeries) + games_per_series: Number(options.games_series), + division_series: Number(options.intra_division_series), + inter_division_series: Number(options.inter_division_series), + inter_league_series: Number(options.inter_league_series), + top_postseason: Number(options.top_postseason), + wildcards: Number(options.wildcards) }); } -function validRequest( - name:string, - structure: LeagueStructureState, - gamesPerSeries: string, - divisionSeries: string, - interDivisionSeries: string, - interLeagueSeries: string - ) { +function validRequest(name:string, structure: LeagueStructureState, options:LeagueOptionsState) { return ( name !== "" && - validNumber(gamesPerSeries) && - validNumber(divisionSeries) && - validNumber(interDivisionSeries) && - validNumber(interLeagueSeries) && + validNumber(options.games_series) && + validNumber(options.intra_division_series) && + validNumber(options.inter_division_series) && + validNumber(options.inter_league_series) && + validNumber(options.top_postseason) && + validNumber(options.wildcards) && structure.subleagues.length % 2 === 0 && structure.subleagues.every(subleague => subleague.name !== "" && @@ -402,28 +428,24 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm type StateBundle = [T, React.Dispatch>] -function LeagueOptions(props: { - gamesSeries: StateBundle, - seriesDivisionOpp: StateBundle, - seriesInterDivision: StateBundle, - seriesInterLeague: StateBundle, - showError: boolean - }) { - - let [nGamesSeries, setGamesSeries] = props.gamesSeries; - let [nSeriesDivisionOpp, setSeriesDivisionOpp] = props.seriesDivisionOpp; - let [nSeriesInterDivision, setSeriesInterDivision] = props.seriesInterDivision; - let [nSeriesInterLeague, setSeriesInterLeague] = props.seriesInterLeague; - +function LeagueOptions(props: {state: LeagueOptionsState, dispatch: React.Dispatch, showError: boolean}) { return (
- - + + props.dispatch({type: 'set_games_series', value: value})} showError={props.showError}/> + + props.dispatch({type: 'set_top_postseason', value: value})} showError={props.showError}/> + + props.dispatch({type: 'set_wildcards', value: value})} showError={props.showError}/>
- - + + props.dispatch({type: 'set_intra_division_series', value: value})} showError={props.showError}/> + + props.dispatch({type: 'set_inter_division_series', value: value})} showError={props.showError}/> + + props.dispatch({type: 'set_inter_league_series', value: value})} showError={props.showError}/>
); From ac2f3039367fd82bb16b66f8276cd5cc71fcea68 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Tue, 12 Jan 2021 15:36:56 -0500 Subject: [PATCH 18/78] switched to gpl3 --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From b6e4c1069c65c1cd47c82099d2a7744ca1a17be5 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 04:23:48 -0500 Subject: [PATCH 19/78] lots of league database foundation --- .gitignore | 1 + games.py | 6 ++- league_storage.py | 124 ++++++++++++++++++++++++++++++++++++++++++++ leagues.py | 64 +++++++++++++++-------- main_controller.py | 2 +- the-prestige.pyproj | 3 ++ the_prestige.py | 97 ++++++++++++++++++++-------------- 7 files changed, 233 insertions(+), 64 deletions(-) create mode 100644 league_storage.py diff --git a/.gitignore b/.gitignore index 6b7e8e2..b4a7181 100644 --- a/.gitignore +++ b/.gitignore @@ -349,6 +349,7 @@ ids matteo.db matteo.db-wal matteo.db-shm +/data/leagues/* /matteo_env/Lib/site-packages/flask_socketio/__init__.py env diff --git a/games.py b/games.py index 8ac5014..2e4e1cb 100644 --- a/games.py +++ b/games.py @@ -674,6 +674,10 @@ class game(object): return "Game not started." def add_stats(self): + players = self.get_stats() + db.add_stats(players) + + def get_stats(self): players = [] for this_player in self.teams["away"].lineup: players.append((this_player.name, this_player.game_stats)) @@ -681,7 +685,7 @@ class game(object): players.append((this_player.name, this_player.game_stats)) players.append((self.teams["home"].pitcher.name, self.teams["home"].pitcher.game_stats)) players.append((self.teams["away"].pitcher.name, self.teams["away"].pitcher.game_stats)) - db.add_stats(players) + return players diff --git a/league_storage.py b/league_storage.py new file mode 100644 index 0000000..4c9f777 --- /dev/null +++ b/league_storage.py @@ -0,0 +1,124 @@ +import os, json, re, jsonpickle +import sqlite3 as sql + +data_dir = "data" +league_dir = "leagues" + +def create_connection(league_name): + #create connection, create db if doesn't exist + conn = None + try: + conn = sql.connect(os.path.join(data_dir, league_dir, f"{league_name}.db")) + + # enable write-ahead log for performance and resilience + conn.execute('pragma journal_mode=wal') + + return conn + except: + print("oops, db connection no work") + return conn + +def state(league_name): + with open(os.path.join(data_dir, league_dir, f"{league_name}.state")) as state_file: + return json.load(state_file) + +def init_league_db(league): + conn = create_connection(league.name) + + player_stats_table_check_string = """ CREATE TABLE IF NOT EXISTS stats ( + counter integer PRIMARY KEY, + id text, + name text, + team_name text, + outs_pitched integer DEFAULT 0, + walks_allowed integer DEFAULT 0, + hits_allowed integer DEFAULT 0, + strikeouts_given integer DEFAULT 0, + runs_allowed integer DEFAULT 0, + plate_appearances integer DEFAULT 0, + walks_taken integer DEFAULT 0, + sacrifices integer DEFAULT 0, + hits integer DEFAULT 0, + home_runs integer DEFAULT 0, + total_bases integer DEFAULT 0, + rbis integer DEFAULT 0, + strikeouts_taken integer DEFAULT 0 + );""" + + teams_table_check_string = """ CREATE TABLE IF NOT EXISTS teams ( + counter integer PRIMARY KEY, + name text NOT NULL, + wins integer DEFAULT 0, + losses integer DEFAULT 0, + run_diff integer DEFAULT 0 + ); """ + + if conn is not None: + c = conn.cursor() + c.execute(player_stats_table_check_string) + c.execute(teams_table_check_string) + + for team in league.teams_in_league(): + c.execute("INSERT INTO teams (name) VALUES (?)", (team.name,)) + + player_string = "INSERT INTO stats (name, team_name) VALUES (?,?)" + for batter in team.lineup: + c.execute(player_string, (batter.name, team.name)) + for pitcher in team.rotation: + c.execute(player_string, (pitcher.name, team.name)) + + state_dic = { + "day" : league.day, + "schedule" : league.schedule, + "game_length" : league.game_length, + "series_length" : league.series_length, + "games_per_hour" : league.games_per_hour, + "historic" : False + } + with open(os.path.join(data_dir, league_dir, f"{league.name}.state"), "w") as state_file: + json.dump(state_dic, state_file, indent=4) + + conn.commit() + conn.close() + +def add_stats(league_name, player_game_stats_list): + conn = create_connection(league_name) + if conn is not None: + c=conn.cursor() + for (name, player_stats_dic) in player_game_stats_list: + c.execute("SELECT * FROM stats WHERE name=?",(name,)) + this_player = c.fetchone() + if this_player is not None: + for stat in player_stats_dic.keys(): + c.execute(f"SELECT {stat} FROM stats WHERE name=?",(name,)) + old_value = int(c.fetchone()[0]) + c.execute(f"UPDATE stats SET {stat} = ? WHERE name=?",(player_stats_dic[stat]+old_value,name)) + else: + c.execute("INSERT INTO stats(name) VALUES (?)",(name,)) + for stat in player_stats_dic.keys(): + c.execute(f"UPDATE stats SET {stat} = ? WHERE name=?",(player_stats_dic[stat],name)) + conn.commit() + conn.close() + +def update_standings(league_name, update_dic): + if league_exists(league_name): + conn = create_connection(league_name) + if conn is not None: + c = conn.cursor() + + for team_name in update_dic.keys(): + for stat_type in update_dic[team_name].keys(): #wins, losses, run_diff + c.execute(f"SELECT {stat_type} FROM teams WHERE name = ?", (team_name,)) + old_value = int(c.fetchone()[0]) + c.execute(f"UPDATE teams SET {stat_type} = ? WHERE name = ?", (update_dic[team_name][stat_type]+old_value, team_name)) + conn.commit() + conn.close() + + + +def league_exists(league_name): + with os.scandir(os.path.join(data_dir, league_dir)) as folder: + for file in folder: + if file.name == f"{league_name}.state": + return not state(league_name)["historic"] + return False \ No newline at end of file diff --git a/leagues.py b/leagues.py index ffa532e..d7cc5d9 100644 --- a/leagues.py +++ b/leagues.py @@ -1,39 +1,39 @@ -import time, asyncio, jsonpickle, random, math +import time, asyncio, json, jsonpickle, random, math, os +import league_storage as league_db from itertools import chain from games import team, game from discord import Embed, Color -import database as db - - - +data_dir = "data" +league_dir = "leagues" class league_structure(object): - def __init__(self, name, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): - self.league = league_dic #key: subleague, value: {division : teams} + def __init__(self, name): + self.name = name + + def setup(self, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): + self.league = league_dic #key: subleague, value: {division : team_name} self.constraints = { "division_games" : division_games, "inter_div_games" : inter_division_games, "inter_league_games" : inter_league_games } self.day = 1 - self.name = name self.schedule = {} self.series_length = 3 #can be changed self.game_length = None self.active = False self.games_per_hour = games_per_hour - self.standings = {} - for this_team in self.teams_in_league(): - self.standings[this_team.name] = { - "wins" : 0, - "losses" : 0, - "run differential" : 0, - } + def add_stats_from_game(self, players_list): + league_db.add_stats(players_list) + + def update_standings(self, results_dic): + league_db.update_standings(self.name, results_dic) + def last_series_check(self): - return day + 1 in self.schedule.keys() + return self.day + 1 in self.schedule.keys() def find_team(self, team_name): for subleague in iter(self.league.keys()): @@ -93,9 +93,9 @@ class league_structure(object): a_home = True for team_a, team_b in zip(league_a, league_b): if a_home: - matchups.append([team_b, team_a]) + matchups.append([team_b.name, team_a.name]) else: - matchups.append([team_a, team_b]) + matchups.append([team_a.name, team_b.name]) a_home != a_home for i in range(0, self.constraints["inter_div_games"]): #inter-division matchups @@ -127,9 +127,9 @@ class league_structure(object): a_home = True for team_a, team_b in zip(divs_a, divs_b): if a_home: - matchups.append([team_b, team_a]) + matchups.append([team_b.name, team_a.name]) else: - matchups.append([team_a, team_b]) + matchups.append([team_a.name, team_b.name]) a_home != a_home @@ -146,9 +146,9 @@ class league_structure(object): for team_a, team_b in zip(teams_a, teams_b): for j in range(0, self.constraints["division_games"]): if i % 2 == 0: - matchups.append([team_b, team_a]) + matchups.append([team_b.name, team_a.name]) else: - matchups.append([team_a, team_b]) + matchups.append([team_a.name, team_b.name]) division.insert(1, division.pop()) return matchups @@ -277,4 +277,22 @@ class bracket(object): if parent is None: self.this_bracket = branch - return branch \ No newline at end of file + return branch + +def save_league(this_league): + if not league_db.league_exists(this_league.name): + league_db.init_league_db(this_league) + with open(os.path.join(data_dir, league_dir, f"{this_league.name}.league"), "w") as league_file: + league_json_string = jsonpickle.encode(this_league.league, keys=True) + json.dump(league_json_string, league_file, indent=4) + return True + +def load_league_file(league_name): + if league_db.league_exists(league_name): + state = league_db.state(league_name) + this_league = league_structure(league_name) + with open(os.path.join(data_dir, league_dir, f"{this_league.name}.league")) as league_file: + this_league.league = jsonpickle.decode(json.load(league_file), keys=True, classes=team) + with open(os.path.join(data_dir, league_dir, f"{this_league.name}.state")) as state_file: + state_dic = json.load(state_file) + return this_league \ No newline at end of file diff --git a/main_controller.py b/main_controller.py index 707c9f7..73da0a7 100644 --- a/main_controller.py +++ b/main_controller.py @@ -141,4 +141,4 @@ def update_loop(): state["update_pause"] -= 1 socketio.emit("states_update", game_states) - time.sleep(8) + time.sleep(1) \ No newline at end of file diff --git a/the-prestige.pyproj b/the-prestige.pyproj index dc816c7..090ed69 100644 --- a/the-prestige.pyproj +++ b/the-prestige.pyproj @@ -32,6 +32,9 @@ Code + + Code + Code diff --git a/the_prestige.py b/the_prestige.py index 29ddc51..1669c48 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -724,6 +724,27 @@ class StartDraftCommand(Command): raise SlowDraftError('Too slow') return draft_message +class DebugLeague(Command): + name = "league" + + async def execute(self, msg, command): + league = leagues.league_structure("test2") + league.setup({ + "nL" : { + "nL west" : [get_team_fuzzy_search("lockpicks"), get_team_fuzzy_search("liches")], + "nL east" : [get_team_fuzzy_search("bethesda soft"), get_team_fuzzy_search("traverse city")] + }, + "aL" : { + "aL west" : [get_team_fuzzy_search("deep space"), get_team_fuzzy_search("phoenix")], + "aL east" : [get_team_fuzzy_search("cheyenne mountain"), get_team_fuzzy_search("tarot dragons")] + } + }, division_games=6, inter_division_games=3, inter_league_games=3) + league.generate_schedule() + leagues.save_league(league) + await start_league_day(msg.channel, league, 2) + + + commands = [ IntroduceCommand(), @@ -751,6 +772,7 @@ commands = [ HelpCommand(), StartDraftCommand(), DraftPlayerCommand(), + DebugLeague() ] client = discord.Client() @@ -792,6 +814,7 @@ async def on_ready(): watch_task = asyncio.create_task(game_watcher()) await watch_task + @client.event async def on_reaction_add(reaction, user): if reaction.message in setupmessages.keys(): @@ -1382,7 +1405,7 @@ def get_team_fuzzy_search(team_name): team = teams[0] return team -async def start_league_day(channel, league): +async def start_league_day(channel, league, autoplay = 1): current_games = [] if league.schedule is {}: league.generate_schedule() @@ -1395,7 +1418,9 @@ async def start_league_day(channel, league): for pair in games_to_start: if pair[0] is not None and pair[1] is not None: - this_game = games.game(pair[0].prepare_for_save().finalize(), pair[1].prepare_for_save().finalize(), length = game_length) + away = get_team_fuzzy_search(pair[0]) + home = get_team_fuzzy_search(pair[1]) + this_game = games.game(away.prepare_for_save().finalize(), home.prepare_for_save().finalize(), length = game_length) this_game, state_init = prepare_game(this_game) state_init["is_league"] = True @@ -1417,14 +1442,14 @@ async def start_league_day(channel, league): await channel.send(f"The next series of the {league.name} is starting now, at {config()['simmadome_url']+ext}") last = False - await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, last) + await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, autoplay, last) -async def league_day_watcher(channel, league, games_list, filter_url, last = False): +async def league_day_watcher(channel, league, games_list, filter_url, autoplay, last = False): league.active = True + autoplay -= 1 active_leagues.append(league) - wins_in_series = {} - losses_in_series = {} + series_results = {} while league.active: queued_games = [] @@ -1433,30 +1458,30 @@ async def league_day_watcher(channel, league, games_list, filter_url, last = Fal for i in range(0, len(games_list)): game, key = games_list[i] if game.over and main_controller.master_games_dic[key][1]["end_delay"] <= 8: - if game.teams['home'].name not in wins_in_series.keys(): - wins_in_series[game.teams["home"].name] = 0 - if game.teams['home'].name not in losses_in_series.keys(): - losses_in_series[game.teams["home"].name] = 0 - if game.teams['away'].name not in wins_in_series.keys(): - wins_in_series[game.teams["away"].name] = 0 - if game.teams['away'].name not in losses_in_series.keys(): - losses_in_series[game.teams["away"].name] = 0 + if game.teams['home'].name not in series_results.keys(): + series_results[game.teams["home"].name]["wins"] = 0 + series_results[game.teams["home"].name]["losses"] = 0 + series_results[game.teams["home"].name]["run_diff"] = 0 + if game.teams['away'].name not in series_results.keys(): + series_results[game.teams["away"].name]["wins"] = 0 + series_results[game.teams["away"].name]["losses"] = 0 + series_results[game.teams["away"].name]["run_diff"] = 0 winner_name = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name loser_name = game.teams['away'].name if game.teams['home'].score > game.teams['away'].score else game.teams['home'].name rd = int(math.fabs(game.teams['home'].score - game.teams['away'].score)) - wins_in_series[winner_name] += 1 - league.standings[winner_name]["wins"] += 1 - league.standings[winner_name]["run differential"] += rd - losses_in_series[loser_name] += 1 - league.standings[loser_name]["losses"] += 1 - league.standings[loser_name]["run differential"] -= rd + series_results[winner_name]["wins"] += 1 + series_results[winner_name]["run_diff"] += rd + series_results[loser_name]["losses"] += 1 + series_results[loser_name]["run_diff"] -= rd + + league.add_stats_from_game(game.get_stats()) final_embed = game_over_embed(game) await channel.send(f"A {league.name} game just ended!") await channel.send(embed=final_embed) - if wins_in_series[winner_name] + losses_in_series[winner_name] < league.series_length: + if series_results[winner_name]["wins"] + series_results[winner_name]["losses"] < league.series_length: queued_games.append(game) games_list.pop(i) break @@ -1484,11 +1509,15 @@ async def league_day_watcher(channel, league, games_list, filter_url, last = Fal await channel.send(f"The next batch of games for the {league.name} will start in {int(wait_seconds/60)} minutes.") await asyncio.sleep(wait_seconds) await channel.send(f"A {league.name} series is continuing now at {filter_url}") - games_list = await continue_league_series(league, queued_games, games_list, wins_in_series) + games_list = await continue_league_series(league, queued_games, games_list, series_results) else: league.active = False - if last: #if this series was the last + + league.update_standings(series_results) + league.day += 1 + + if last or autoplay <= 0: #if this series was the last of the season OR number of series to autoplay has been reached #needs some kind of notification that it's over here active_leagues.pop(active_leagues.index(league)) return @@ -1508,10 +1537,10 @@ async def league_day_watcher(channel, league, games_list, filter_url, last = Fal await channel.send(f"""This {league.name} series is now complete! The next series will be starting in {int(wait_seconds/60)} minutes.""") await asyncio.sleep(wait_seconds) - league.day += 1 - await start_league_day(channel, league) -async def continue_league_series(tourney, queue, games_list, wins_in_series): + await start_league_day(channel, league, autoplay) + +async def continue_league_series(tourney, queue, games_list, series_results): for oldgame in queue: away_team = games.get_team(oldgame.teams["away"].name) home_team = games.get_team(oldgame.teams["home"].name) @@ -1520,7 +1549,7 @@ async def continue_league_series(tourney, queue, games_list, wins_in_series): state_init["is_league"] = True series_string = f"Series score:" - state_init["title"] = f"{series_string} {wins_in_series[away_team.name]} - {wins_in_series[home_team.name]}" + state_init["title"] = f"{series_string} {series_results[away_team.name]['wins']} - {series_results[home_team.name]['wins']}" discrim_string = league.name id = str(uuid4()) @@ -1530,18 +1559,8 @@ async def continue_league_series(tourney, queue, games_list, wins_in_series): return games_list -league = leagues.league_structure("test", { - "nL" : { - "nL west" : ["a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1"], - "nL east" : ["a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2"] - }, - "aL" : { - "aL west" : ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], - "aL east" : ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"] - } -}, division_games=6, inter_division_games=3, inter_league_games=3) -league.generate_schedule() -#print(league.schedule[2]) + + client.run(config()["token"]) From 0349f453947c43de683789ea07f9a56eee284a91 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 04:33:42 -0500 Subject: [PATCH 20/78] fixed an unresolved import --- onomancer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onomancer.py b/onomancer.py index 278d128..00fe3cc 100644 --- a/onomancer.py +++ b/onomancer.py @@ -2,7 +2,7 @@ import requests, json, urllib from requests.adapters import HTTPAdapter -from requests.packages.urllib3.util.retry import Retry +from urllib3.util.retry import Retry import database as db From 8255d838e5dd215958897bab7216a22e83c9b861 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 06:32:28 -0500 Subject: [PATCH 21/78] got leagues actually functioning, i think --- games.py | 17 +++++++++- league_storage.py | 42 +++++++++++++---------- leagues.py | 15 +++++---- simmadome/package-lock.json | 67 ++++++++++++++++++++++++++++--------- simmadome/package.json | 2 +- the_prestige.py | 29 +++++++++------- 6 files changed, 119 insertions(+), 53 deletions(-) diff --git a/games.py b/games.py index 2e4e1cb..6b2c99c 100644 --- a/games.py +++ b/games.py @@ -199,7 +199,8 @@ class team(object): def finalize(self): if self.is_ready(): - self.set_pitcher() + if self.pitcher == None: + self.set_pitcher() while len(self.lineup) <= 4: self.lineup.append(random.choice(self.lineup)) return self @@ -363,6 +364,7 @@ class game(object): run_roll = run_roll * .9 #stealing third is harder if run_roll < 1: outcome["steals"].append(f"{baserunner} was caught stealing {base_string(start_base+1)} base by {defender}!") + self.get_pitcher().game_stats["outs_pitched"] += 1 self.outs += 1 else: outcome["steals"].append(f"{baserunner} steals {base_string(start_base+1)} base!") @@ -686,6 +688,19 @@ class game(object): players.append((self.teams["home"].pitcher.name, self.teams["home"].pitcher.game_stats)) players.append((self.teams["away"].pitcher.name, self.teams["away"].pitcher.game_stats)) return players + + def get_team_specific_stats(self): + players = { + self.teams["away"].name : [], + self.teams["home"].name : [] + } + for this_player in self.teams["away"].lineup: + players[self.teams["away"].name].append((this_player.name, this_player.game_stats)) + for this_player in self.teams["home"].lineup: + players[self.teams["home"].name].append((this_player.name, this_player.game_stats)) + players[self.teams["home"].name].append((self.teams["home"].pitcher.name, self.teams["home"].pitcher.game_stats)) + players[self.teams["away"].name].append((self.teams["away"].pitcher.name, self.teams["away"].pitcher.game_stats)) + return players diff --git a/league_storage.py b/league_storage.py index 4c9f777..902b372 100644 --- a/league_storage.py +++ b/league_storage.py @@ -8,7 +8,10 @@ def create_connection(league_name): #create connection, create db if doesn't exist conn = None try: - conn = sql.connect(os.path.join(data_dir, league_dir, f"{league_name}.db")) + if not os.path.exists(os.path.join(data_dir, league_dir, league_name)): + + os.makedirs(os.path.join(data_dir, league_dir, league_name)) + conn = sql.connect(os.path.join(data_dir, league_dir, league_name, f"{league_name}.db")) # enable write-ahead log for performance and resilience conn.execute('pragma journal_mode=wal') @@ -19,7 +22,9 @@ def create_connection(league_name): return conn def state(league_name): - with open(os.path.join(data_dir, league_dir, f"{league_name}.state")) as state_file: + if not os.path.exists(os.path.dirname(os.path.join(data_dir, league_dir, league_name, f"{league_name}.state"))): + os.makedirs(os.path.dirname(os.path.join(data_dir, league_dir, league_name, f"{league_name}.state"))) + with open(os.path.join(data_dir, league_dir, league_name, f"{league_name}.state")) as state_file: return json.load(state_file) def init_league_db(league): @@ -75,7 +80,9 @@ def init_league_db(league): "games_per_hour" : league.games_per_hour, "historic" : False } - with open(os.path.join(data_dir, league_dir, f"{league.name}.state"), "w") as state_file: + if not os.path.exists(os.path.dirname(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"))): + os.makedirs(os.path.dirname(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"))) + with open(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"), "w") as state_file: json.dump(state_dic, state_file, indent=4) conn.commit() @@ -85,18 +92,19 @@ def add_stats(league_name, player_game_stats_list): conn = create_connection(league_name) if conn is not None: c=conn.cursor() - for (name, player_stats_dic) in player_game_stats_list: - c.execute("SELECT * FROM stats WHERE name=?",(name,)) - this_player = c.fetchone() - if this_player is not None: - for stat in player_stats_dic.keys(): - c.execute(f"SELECT {stat} FROM stats WHERE name=?",(name,)) - old_value = int(c.fetchone()[0]) - c.execute(f"UPDATE stats SET {stat} = ? WHERE name=?",(player_stats_dic[stat]+old_value,name)) - else: - c.execute("INSERT INTO stats(name) VALUES (?)",(name,)) - for stat in player_stats_dic.keys(): - c.execute(f"UPDATE stats SET {stat} = ? WHERE name=?",(player_stats_dic[stat],name)) + for team_name in player_game_stats_list.keys(): + for (name, player_stats_dic) in player_game_stats_list[team_name]: + c.execute("SELECT * FROM stats WHERE name=? AND team_name=?",(name, team_name)) + this_player = c.fetchone() + if this_player is not None: + for stat in player_stats_dic.keys(): + c.execute(f"SELECT {stat} FROM stats WHERE name=? AND team_name=?",(name, team_name)) + old_value = int(c.fetchone()[0]) + c.execute(f"UPDATE stats SET {stat} = ? WHERE name=? AND team_name=?",(player_stats_dic[stat]+old_value, name, team_name)) + else: + c.execute("INSERT INTO stats(name) VALUES (?)",(name,)) + for stat in player_stats_dic.keys(): + c.execute(f"UPDATE stats SET {stat} = ? WHERE name=? AND team_name=?",(player_stats_dic[stat], name, team_name)) conn.commit() conn.close() @@ -118,7 +126,7 @@ def update_standings(league_name, update_dic): def league_exists(league_name): with os.scandir(os.path.join(data_dir, league_dir)) as folder: - for file in folder: - if file.name == f"{league_name}.state": + for subfolder in folder: + if league_name in subfolder.name: return not state(league_name)["historic"] return False \ No newline at end of file diff --git a/leagues.py b/leagues.py index d7cc5d9..44dcf27 100644 --- a/leagues.py +++ b/leagues.py @@ -25,15 +25,18 @@ class league_structure(object): self.active = False self.games_per_hour = games_per_hour - def add_stats_from_game(self, players_list): - league_db.add_stats(players_list) + def add_stats_from_game(self, players_dic): + league_db.add_stats(self.name, players_dic) def update_standings(self, results_dic): league_db.update_standings(self.name, results_dic) def last_series_check(self): - return self.day + 1 in self.schedule.keys() + return str(math.ceil((self.day)/self.series_length) + 1) in self.schedule.keys() + + def day_to_series_num(self, day): + return math.ceil((self.day)/self.series_length) def find_team(self, team_name): for subleague in iter(self.league.keys()): @@ -282,7 +285,7 @@ class bracket(object): def save_league(this_league): if not league_db.league_exists(this_league.name): league_db.init_league_db(this_league) - with open(os.path.join(data_dir, league_dir, f"{this_league.name}.league"), "w") as league_file: + with open(os.path.join(data_dir, league_dir, this_league.name, f"{this_league.name}.league"), "w") as league_file: league_json_string = jsonpickle.encode(this_league.league, keys=True) json.dump(league_json_string, league_file, indent=4) return True @@ -291,8 +294,8 @@ def load_league_file(league_name): if league_db.league_exists(league_name): state = league_db.state(league_name) this_league = league_structure(league_name) - with open(os.path.join(data_dir, league_dir, f"{this_league.name}.league")) as league_file: + with open(os.path.join(data_dir, league_dir, league_name, f"{this_league.name}.league")) as league_file: this_league.league = jsonpickle.decode(json.load(league_file), keys=True, classes=team) - with open(os.path.join(data_dir, league_dir, f"{this_league.name}.state")) as state_file: + with open(os.path.join(data_dir, league_dir, league_name, f"{this_league.name}.state")) as state_file: state_dic = json.load(state_file) return this_league \ No newline at end of file diff --git a/simmadome/package-lock.json b/simmadome/package-lock.json index cccf2db..9bb26d1 100644 --- a/simmadome/package-lock.json +++ b/simmadome/package-lock.json @@ -1974,6 +1974,7 @@ "version": "7.29.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.1.tgz", "integrity": "sha512-6BU7vAjKuMspCy9QQEtbWgmkuXi/yOSZo3ANdvZmNQW8N/WQGjO9cvlcA5EFJaPtp2hL1RAaPGpCXxumijUxCg==", + "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -1989,6 +1990,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -1997,6 +1999,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2006,6 +2009,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -2013,17 +2017,20 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2034,6 +2041,7 @@ "version": "5.11.8", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.8.tgz", "integrity": "sha512-ScyKrWQM5xNcr79PkSewnA79CLaoxVskE+f7knTOhDD9ftZSA1Jw8mj+pneqhEu3x37ncNfW84NUr7lqK+mXjA==", + "dev": true, "requires": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -2049,6 +2057,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -2057,6 +2066,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2066,6 +2076,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -2073,12 +2084,14 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, "requires": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -2088,17 +2101,20 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "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==", + "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -2108,6 +2124,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2118,6 +2135,7 @@ "version": "11.2.2", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.2.tgz", "integrity": "sha512-jaxm0hwUjv+hzC+UFEywic7buDC9JQ1q3cDsrWVSDAPmLotfA6E6kUHlYm/zOeGCac6g48DR36tFHxl7Zb+N5A==", + "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.28.1" @@ -2127,6 +2145,7 @@ "version": "12.6.0", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.6.0.tgz", "integrity": "sha512-FNEH/HLmOk5GO70I52tKjs7WvGYckeE/SrnLX/ip7z2IGbffyd5zOUM1tZ10vsTphqm+VbDFI0oaXu0wcfQsAQ==", + "dev": true, "requires": { "@babel/runtime": "^7.12.5" } @@ -2139,7 +2158,8 @@ "@types/aria-query": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz", - "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==" + "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==", + "dev": true }, "@types/babel__core": { "version": "7.1.12", @@ -2217,7 +2237,8 @@ "@types/history": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", - "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==" + "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==", + "dev": true }, "@types/html-minifier-terser": { "version": "5.1.1", @@ -2249,6 +2270,7 @@ "version": "26.0.19", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.19.tgz", "integrity": "sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ==", + "dev": true, "requires": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -2292,7 +2314,8 @@ "@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==" + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true }, "@types/q": { "version": "1.5.4", @@ -2303,6 +2326,7 @@ "version": "16.14.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz", "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==", + "dev": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2312,6 +2336,7 @@ "version": "16.9.10", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz", "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==", + "dev": true, "requires": { "@types/react": "^16" } @@ -2320,6 +2345,7 @@ "version": "5.1.10", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.10.tgz", "integrity": "sha512-yu11Hu16CfGvvBWc7wluRlxbwfuSlY0snEntbbOTvfgMvyO6uLaEpAbnVOntr+9TNIpR++OOlPkmDcJPxOXRaQ==", + "dev": true, "requires": { "@types/history": "*", "@types/react": "*" @@ -2329,6 +2355,7 @@ "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": "*", @@ -2346,7 +2373,8 @@ "@types/socket.io-client": { "version": "1.4.34", "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", - "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==" + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==", + "dev": true }, "@types/source-list-map": { "version": "0.1.2", @@ -2367,6 +2395,7 @@ "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==", + "dev": true, "requires": { "@types/jest": "*" } @@ -2374,7 +2403,8 @@ "@types/twemoji": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/@types/twemoji/-/twemoji-12.1.1.tgz", - "integrity": "sha512-dW1B1WHTfrWmEzXb/tp8xsZqQHAyMB9JwLwbBqkIQVzmNUI02R7lJqxUpKFM114ygNZHKA1r74oPugCAiYHt1A==" + "integrity": "sha512-dW1B1WHTfrWmEzXb/tp8xsZqQHAyMB9JwLwbBqkIQVzmNUI02R7lJqxUpKFM114ygNZHKA1r74oPugCAiYHt1A==", + "dev": true }, "@types/uglify-js": { "version": "3.11.1", @@ -4598,7 +4628,8 @@ "css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true }, "cssdb": { "version": "4.4.0", @@ -4769,7 +4800,8 @@ "csstype": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==", + "dev": true }, "cyclist": { "version": "1.0.1", @@ -5090,7 +5122,8 @@ "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==" + "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==", + "dev": true }, "dom-converter": { "version": "0.2.0", @@ -9818,7 +9851,8 @@ "lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "dev": true }, "magic-string": { "version": "0.25.7", @@ -9994,7 +10028,8 @@ "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==" + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true }, "mini-create-react-context": { "version": "0.4.1", @@ -12670,6 +12705,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -14279,6 +14315,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, "requires": { "min-indent": "^1.0.0" } diff --git a/simmadome/package.json b/simmadome/package.json index c98a967..087a124 100644 --- a/simmadome/package.json +++ b/simmadome/package.json @@ -14,7 +14,7 @@ "typescript": "^4.1.3", "web-vitals": "^0.2.4" }, - "devDependencies" : { + "devDependencies": { "@testing-library/jest-dom": "^5.11.8", "@testing-library/react": "^11.2.2", "@testing-library/user-event": "^12.6.0", diff --git a/the_prestige.py b/the_prestige.py index 1669c48..a86eabf 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -738,10 +738,10 @@ class DebugLeague(Command): "aL west" : [get_team_fuzzy_search("deep space"), get_team_fuzzy_search("phoenix")], "aL east" : [get_team_fuzzy_search("cheyenne mountain"), get_team_fuzzy_search("tarot dragons")] } - }, division_games=6, inter_division_games=3, inter_league_games=3) + }, division_games=6, inter_division_games=3, inter_league_games=3, games_per_hour = 12) league.generate_schedule() leagues.save_league(league) - await start_league_day(msg.channel, league, 2) + await start_league_day(msg.channel, league, autoplay = 1) @@ -1407,10 +1407,8 @@ def get_team_fuzzy_search(team_name): async def start_league_day(channel, league, autoplay = 1): current_games = [] - if league.schedule is {}: - league.generate_schedule() - games_to_start = league.schedule[math.ceil(league.day/league.series_length)] + games_to_start = league.schedule[league.day_to_series_num(league.day)] if league.game_length is None: game_length = games.config()["default_length"] else: @@ -1419,7 +1417,9 @@ async def start_league_day(channel, league, autoplay = 1): for pair in games_to_start: if pair[0] is not None and pair[1] is not None: away = get_team_fuzzy_search(pair[0]) + away.set_pitcher(rotation_slot=league.day-1) home = get_team_fuzzy_search(pair[1]) + this_game = games.game(away.prepare_for_save().finalize(), home.prepare_for_save().finalize(), length = game_length) this_game, state_init = prepare_game(this_game) @@ -1459,10 +1459,12 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, game, key = games_list[i] if game.over and main_controller.master_games_dic[key][1]["end_delay"] <= 8: if game.teams['home'].name not in series_results.keys(): + series_results[game.teams["home"].name] = {} series_results[game.teams["home"].name]["wins"] = 0 series_results[game.teams["home"].name]["losses"] = 0 series_results[game.teams["home"].name]["run_diff"] = 0 if game.teams['away'].name not in series_results.keys(): + series_results[game.teams["away"].name] = {} series_results[game.teams["away"].name]["wins"] = 0 series_results[game.teams["away"].name]["losses"] = 0 series_results[game.teams["away"].name]["run_diff"] = 0 @@ -1476,7 +1478,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, series_results[loser_name]["losses"] += 1 series_results[loser_name]["run_diff"] -= rd - league.add_stats_from_game(game.get_stats()) + league.add_stats_from_game(game.get_team_specific_stats()) final_embed = game_over_embed(game) await channel.send(f"A {league.name} game just ended!") @@ -1487,8 +1489,8 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, break except: print("something went wrong in league_day_watcher") - await asyncio.sleep(4) - + await asyncio.sleep(1) + league.day += 1 if len(queued_games) > 0: @@ -1502,7 +1504,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, else: delta = datetime.timedelta(minutes= (60 - now.minute)) - next_start = (now + delta).replace(seconds=0, microsecond=0) + next_start = (now + delta).replace(microsecond=0) wait_seconds = (next_start - now).seconds @@ -1515,7 +1517,6 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, league.update_standings(series_results) - league.day += 1 if last or autoplay <= 0: #if this series was the last of the season OR number of series to autoplay has been reached #needs some kind of notification that it's over here @@ -1532,7 +1533,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, else: delta = datetime.timedelta(minutes= (60 - now.minute)) - next_start = (now + delta).replace(seconds=0, microsecond=0) + next_start = (now + delta).replace(microsecond=0) wait_seconds = (next_start - now).seconds await channel.send(f"""This {league.name} series is now complete! The next series will be starting in {int(wait_seconds/60)} minutes.""") @@ -1540,11 +1541,13 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, await start_league_day(channel, league, autoplay) -async def continue_league_series(tourney, queue, games_list, series_results): +async def continue_league_series(league, queue, games_list, series_results): for oldgame in queue: away_team = games.get_team(oldgame.teams["away"].name) + away_team.set_pitcher(rotation_slot=league.day) home_team = games.get_team(oldgame.teams["home"].name) - this_game = games.game(away_team.finalize(), home_team.finalize(), length = tourney.game_length) + home_team.set_pitcher(rotation_slot=league.day) + this_game = games.game(away_team.finalize(), home_team.finalize(), length = league.game_length) this_game, state_init = prepare_game(this_game) state_init["is_league"] = True From 1189fb219abd7a1206b6c365b316368e1bf65a7b Mon Sep 17 00:00:00 2001 From: Astrid Date: Wed, 13 Jan 2021 12:56:00 +0100 Subject: [PATCH 22/78] Update Dockerfile for frontend build --- .dockerignore | 6 ++++++ .gitignore | 2 ++ Dockerfile | 19 +++++++++++++++---- 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5c484d3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +venv/ +matteo_env/ +__pycache__/ +simmadome/node_modules +data/ +.git/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index b4a7181..af99f24 100644 --- a/.gitignore +++ b/.gitignore @@ -344,6 +344,7 @@ config.json games_config.json weather_config.json ids +data/ # database matteo.db @@ -351,5 +352,6 @@ matteo.db-wal matteo.db-shm /data/leagues/* /matteo_env/Lib/site-packages/flask_socketio/__init__.py +Pipfile env diff --git a/Dockerfile b/Dockerfile index 75d8a22..fc250eb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,20 @@ -FROM python:3.8 -EXPOSE 5000 - +# - Build stage 1: frontend (simmadome/ directory) +FROM node:alpine AS frontend WORKDIR /app -COPY . ./ +COPY simmadome/package.json simmadome/package-lock.json ./ +RUN npm install +COPY simmadome/ ./ +RUN npm run build + +# - Build stage 2: backend (Python) +FROM python:3.8 +EXPOSE 5000 +WORKDIR /app + +COPY requirements.txt . RUN pip install -r requirements.txt +COPY . ./ +COPY --from=frontend /app/build/ simmadome/build/ CMD ["python", "the_prestige.py"] From cfd4af5f7cf677cbcf43aba1bc1d4317d1f78309 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 15:27:59 -0500 Subject: [PATCH 23/78] added another patron --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 343a2fd..e22791b 100644 --- a/README.md +++ b/README.md @@ -99,3 +99,4 @@ these folks are helping me a *ton* via patreon, and i cannot possibly thank them - Ryan Littleton - Evie Diver - iliana etaoin +- Stephen Bell From 2b0aadd34f0522cac15246bfa50fde57cb031df1 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Wed, 13 Jan 2021 16:15:48 -0500 Subject: [PATCH 24/78] fix inning arrow not updating --- simmadome/src/Game.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simmadome/src/Game.tsx b/simmadome/src/Game.tsx index b01a0b9..af1a50d 100644 --- a/simmadome/src/Game.tsx +++ b/simmadome/src/Game.tsx @@ -20,7 +20,7 @@ function Game(props: {gameId: string, state : GameState}) { return (
-
Inning: {state.display_top_of_inning ? "🔼" : "🔽"} {state.display_inning}/{state.max_innings}
+
Inning: {state.display_top_of_inning ? "🔼" : "🔽"} {state.display_inning}/{state.max_innings}
{state.title}
{state.weather_emoji} {state.weather_text}
From cbcb950d781613dadd424c322250d938ee90ada9 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 19:20:58 -0500 Subject: [PATCH 25/78] implemented league saving and loading --- games.py | 2 +- league_storage.py | 26 +++++++++ leagues.py | 44 ++++++++++++-- the_prestige.py | 146 +++++++++++++++++++++++++++------------------- 4 files changed, 151 insertions(+), 67 deletions(-) diff --git a/games.py b/games.py index 6b2c99c..d917bca 100644 --- a/games.py +++ b/games.py @@ -173,7 +173,7 @@ class team(object): if rotation_slot is None: self.pitcher = random.choice(temp_rotation) else: - self.pitcher = temp_rotation[rotation_slot % len(temp_rotation)] + self.pitcher = temp_rotation[(rotation_slot-1) % len(temp_rotation)] def is_ready(self): try: diff --git a/league_storage.py b/league_storage.py index 902b372..63a7fe7 100644 --- a/league_storage.py +++ b/league_storage.py @@ -78,6 +78,7 @@ def init_league_db(league): "game_length" : league.game_length, "series_length" : league.series_length, "games_per_hour" : league.games_per_hour, + "owner" : None, "historic" : False } if not os.path.exists(os.path.dirname(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"))): @@ -88,6 +89,20 @@ def init_league_db(league): conn.commit() conn.close() +def save_league(league): + if league_exists(league.name): + state_dic = { + "day" : league.day, + "schedule" : league.schedule, + "game_length" : league.game_length, + "series_length" : league.series_length, + "games_per_hour" : league.games_per_hour, + "owner" : league.owner, + "historic" : league.historic + } + with open(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"), "w") as state_file: + json.dump(state_dic, state_file, indent=4) + def add_stats(league_name, player_game_stats_list): conn = create_connection(league_name) if conn is not None: @@ -122,6 +137,17 @@ def update_standings(league_name, update_dic): conn.commit() conn.close() +def get_standings(league_name): + if league_exists(league_name): + conn = create_connection(league_name) + if conn is not None: + c = conn.cursor() + + c.execute("SELECT name, wins, losses, run_diff FROM teams",) + standings_array = c.fetchall() + conn.close() + return standings_array + def league_exists(league_name): diff --git a/leagues.py b/leagues.py index 44dcf27..b685d8a 100644 --- a/leagues.py +++ b/leagues.py @@ -10,6 +10,8 @@ league_dir = "leagues" class league_structure(object): def __init__(self, name): self.name = name + self.historic = False + self.owner = None def setup(self, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): self.league = league_dic #key: subleague, value: {division : team_name} @@ -33,7 +35,7 @@ class league_structure(object): def last_series_check(self): - return str(math.ceil((self.day)/self.series_length) + 1) in self.schedule.keys() + return str(math.ceil((self.day)/self.series_length) + 1) not in self.schedule.keys() def day_to_series_num(self, day): return math.ceil((self.day)/self.series_length) @@ -164,19 +166,43 @@ class league_structure(object): day = 1 while not scheduled: found = False - if day in self.schedule.keys(): - for game_on_day in self.schedule[day]: + if str(day) in self.schedule.keys(): + for game_on_day in self.schedule[str(day)]: for team in game: if team in game_on_day: found = True if not found: - self.schedule[day].append(game) + self.schedule[str(day)].append(game) scheduled = True else: - self.schedule[day] = [game] + self.schedule[str(day)] = [game] scheduled = True day += 1 + def standings_embed(self): + this_embed = Embed(color=Color.purple(), title=self.name) + standings = {} + for team_name, wins, losses, run_diff in league_db.get_standings(self.name): + standings[team_name] = {"wins" : wins, "losses" : losses, "run_diff" : run_diff} + for subleague in iter(self.league.keys()): + this_embed.add_field(name="Subleague:", value=f"**{subleague}**", inline = False) + for division in iter(self.league[subleague].keys()): + this_embed.add_field(name="Division:", value=f"**{division}**", inline = False) + teams = self.league[subleague][division].copy() + for index in range(0, len(teams)): + this_team = teams[index] + teams[index] = (this_team, standings[teams[index].name]["wins"], standings[teams[index].name]["losses"], standings[teams[index].name]["run_diff"],) + + def sorter(team_in_list): + return (team_in_list[1], team_in_list[3]) + teams.sort(key=sorter, reverse=True) + + for this_team in teams: + this_embed.add_field(name=this_team[0].name, value=f"{this_team[1]} - {this_team[2]} Diff: {this_team[3]}", inline = False) + + this_embed.set_footer(text=f"Standings as of day {self.day-1}") + return this_embed + class tournament(object): def __init__(self, name, team_dic, series_length = 5, finals_series_length = 7, max_innings = 9, id = None, secs_between_games = 300, secs_between_rounds = 600): self.name = name @@ -289,6 +315,8 @@ def save_league(this_league): league_json_string = jsonpickle.encode(this_league.league, keys=True) json.dump(league_json_string, league_file, indent=4) return True + else: + league_db.save_league(this_league) def load_league_file(league_name): if league_db.league_exists(league_name): @@ -298,4 +326,10 @@ def load_league_file(league_name): this_league.league = jsonpickle.decode(json.load(league_file), keys=True, classes=team) with open(os.path.join(data_dir, league_dir, league_name, f"{this_league.name}.state")) as state_file: state_dic = json.load(state_file) + + this_league.day = state_dic["day"] + this_league.schedule = state_dic["schedule"] + this_league.game_length = state_dic["game_length"] + this_league.series_length = state_dic["series_length"] + this_league.owner = state_dic["owner"] return this_league \ No newline at end of file diff --git a/the_prestige.py b/the_prestige.py index a86eabf..a805b93 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1,6 +1,7 @@ import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime import database as db import onomancer as ono +from league_storage import league_exists from the_draft import Draft, DRAFT_ROUNDS from flask import Flask from uuid import uuid4 @@ -137,9 +138,9 @@ class StartGameCommand(Command): league = command.split("\n")[0].split("--league ")[1].split("-")[0].strip() try: if "-d " in command.split("\n")[0]: - day = int(command.split("\n")[0].split("-d ")[1].split("-")[0].strip())-1 + day = int(command.split("\n")[0].split("-d ")[1].split("-")[0].strip()) elif "--day " in command.split("\n")[0]: - day = int(command.split("\n")[0].split("--day ")[1].split("-")[0].strip())-1 + day = int(command.split("\n")[0].split("--day ")[1].split("-")[0].strip()) except ValueError: await msg.channel.send("Make sure you put an integer after the -d flag.") return @@ -724,26 +725,36 @@ class StartDraftCommand(Command): raise SlowDraftError('Too slow') return draft_message -class DebugLeague(Command): - name = "league" +class DebugLeagueStart(Command): + name = "startleague" async def execute(self, msg, command): - league = leagues.league_structure("test2") - league.setup({ - "nL" : { - "nL west" : [get_team_fuzzy_search("lockpicks"), get_team_fuzzy_search("liches")], - "nL east" : [get_team_fuzzy_search("bethesda soft"), get_team_fuzzy_search("traverse city")] - }, - "aL" : { - "aL west" : [get_team_fuzzy_search("deep space"), get_team_fuzzy_search("phoenix")], - "aL east" : [get_team_fuzzy_search("cheyenne mountain"), get_team_fuzzy_search("tarot dragons")] - } - }, division_games=6, inter_division_games=3, inter_league_games=3, games_per_hour = 12) - league.generate_schedule() - leagues.save_league(league) - await start_league_day(msg.channel, league, autoplay = 1) + if not league_exists("test2"): + league = leagues.league_structure("test2") + league.setup({ + "nL" : { + "nL west" : [get_team_fuzzy_search("lockpicks"), get_team_fuzzy_search("liches")], + "nL east" : [get_team_fuzzy_search("bethesda soft"), get_team_fuzzy_search("traverse city")] + }, + "aL" : { + "aL west" : [get_team_fuzzy_search("deep space"), get_team_fuzzy_search("phoenix")], + "aL east" : [get_team_fuzzy_search("cheyenne mountain"), get_team_fuzzy_search("tarot dragons")] + } + }, division_games=6, inter_division_games=3, inter_league_games=3, games_per_hour = 12) + league.generate_schedule() + leagues.save_league(league) + else: + league = leagues.load_league_file("test2") + await start_league_day(msg.channel, league, autoplay = 2) +class DebugLeagueDisplay(Command): + name = "displayleague" + async def execute(self, msg, command): + if league_exists("test2"): + league = leagues.load_league_file("test2") + await msg.channel.send(embed=league.standings_embed()) + commands = [ @@ -772,7 +783,8 @@ commands = [ HelpCommand(), StartDraftCommand(), DraftPlayerCommand(), - DebugLeague() + DebugLeagueStart(), + DebugLeagueDisplay() ] client = discord.Client() @@ -1408,7 +1420,7 @@ def get_team_fuzzy_search(team_name): async def start_league_day(channel, league, autoplay = 1): current_games = [] - games_to_start = league.schedule[league.day_to_series_num(league.day)] + games_to_start = league.schedule[str(league.day_to_series_num(league.day))] if league.game_length is None: game_length = games.config()["default_length"] else: @@ -1417,10 +1429,11 @@ async def start_league_day(channel, league, autoplay = 1): for pair in games_to_start: if pair[0] is not None and pair[1] is not None: away = get_team_fuzzy_search(pair[0]) - away.set_pitcher(rotation_slot=league.day-1) + away.set_pitcher(rotation_slot=league.day) home = get_team_fuzzy_search(pair[1]) + home.set_pitcher(rotation_slot=league.day) - this_game = games.game(away.prepare_for_save().finalize(), home.prepare_for_save().finalize(), length = game_length) + this_game = games.game(away.finalize(), home.finalize(), length = game_length) this_game, state_init = prepare_game(this_game) state_init["is_league"] = True @@ -1439,7 +1452,7 @@ async def start_league_day(channel, league, autoplay = 1): last = True else: - await channel.send(f"The next series of the {league.name} is starting now, at {config()['simmadome_url']+ext}") + await channel.send(f"The day {league.day} series of the {league.name} is starting now, at {config()['simmadome_url']+ext}") last = False await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, autoplay, last) @@ -1454,41 +1467,47 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, while league.active: queued_games = [] while len(games_list) > 0: - try: - for i in range(0, len(games_list)): - game, key = games_list[i] - if game.over and main_controller.master_games_dic[key][1]["end_delay"] <= 8: - if game.teams['home'].name not in series_results.keys(): - series_results[game.teams["home"].name] = {} - series_results[game.teams["home"].name]["wins"] = 0 - series_results[game.teams["home"].name]["losses"] = 0 - series_results[game.teams["home"].name]["run_diff"] = 0 - if game.teams['away'].name not in series_results.keys(): - series_results[game.teams["away"].name] = {} - series_results[game.teams["away"].name]["wins"] = 0 - series_results[game.teams["away"].name]["losses"] = 0 - series_results[game.teams["away"].name]["run_diff"] = 0 + #try: + for i in range(0, len(games_list)): + game, key = games_list[i] + if game.over and main_controller.master_games_dic[key][1]["end_delay"] <= 8: + if game.teams['home'].name not in series_results.keys(): + series_results[game.teams["home"].name] = {} + series_results[game.teams["home"].name]["wins"] = 0 + series_results[game.teams["home"].name]["losses"] = 0 + series_results[game.teams["home"].name]["run_diff"] = 0 + if game.teams['away'].name not in series_results.keys(): + series_results[game.teams["away"].name] = {} + series_results[game.teams["away"].name]["wins"] = 0 + series_results[game.teams["away"].name]["losses"] = 0 + series_results[game.teams["away"].name]["run_diff"] = 0 - winner_name = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name - loser_name = game.teams['away'].name if game.teams['home'].score > game.teams['away'].score else game.teams['home'].name - rd = int(math.fabs(game.teams['home'].score - game.teams['away'].score)) + winner_name = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name + loser_name = game.teams['away'].name if game.teams['home'].score > game.teams['away'].score else game.teams['home'].name + rd = int(math.fabs(game.teams['home'].score - game.teams['away'].score)) - series_results[winner_name]["wins"] += 1 - series_results[winner_name]["run_diff"] += rd - series_results[loser_name]["losses"] += 1 - series_results[loser_name]["run_diff"] -= rd + series_results[winner_name]["wins"] += 1 + series_results[winner_name]["run_diff"] += rd - league.add_stats_from_game(game.get_team_specific_stats()) + winner_dic = {"wins" : 1, "run_diff" : rd} - final_embed = game_over_embed(game) - await channel.send(f"A {league.name} game just ended!") - await channel.send(embed=final_embed) - if series_results[winner_name]["wins"] + series_results[winner_name]["losses"] < league.series_length: - queued_games.append(game) - games_list.pop(i) - break - except: - print("something went wrong in league_day_watcher") + series_results[loser_name]["losses"] += 1 + series_results[loser_name]["run_diff"] -= rd + + loser_dic = {"losses" : 1, "run_diff" : -rd} + + league.add_stats_from_game(game.get_team_specific_stats()) + league.update_standings({winner_name : winner_dic, loser_name : loser_dic}) + leagues.save_league(league) + final_embed = game_over_embed(game) + await channel.send(f"A {league.name} game just ended!") + await channel.send(embed=final_embed) + if series_results[winner_name]["wins"] + series_results[winner_name]["losses"] < league.series_length: + queued_games.append(game) + games_list.pop(i) + break + #except: + #print("something went wrong in league_day_watcher") await asyncio.sleep(1) league.day += 1 @@ -1499,16 +1518,18 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, validminutes = [int((60 * div)/league.games_per_hour) for div in range(0,league.games_per_hour)] for i in range(0, len(validminutes)): if now.minute > validminutes[i]: - if i < len(validminutes)-1: + if i <= len(validminutes)-1: delta = datetime.timedelta(minutes= (validminutes[i+1] - now.minute)) else: delta = datetime.timedelta(minutes= (60 - now.minute)) - next_start = (now + delta).replace(microsecond=0) + next_start = (now + delta).replace(second=0, microsecond=0) wait_seconds = (next_start - now).seconds - - await channel.send(f"The next batch of games for the {league.name} will start in {int(wait_seconds/60)} minutes.") + leagues.save_league(league) + await channel.send(embed=league.standings_embed()) + await channel.send(f"The day {league.day} games for the {league.name} will start in {math.ceil(wait_seconds/60)} minutes.") + leagues.save_league(league) await asyncio.sleep(wait_seconds) await channel.send(f"A {league.name} series is continuing now at {filter_url}") games_list = await continue_league_series(league, queued_games, games_list, series_results) @@ -1516,10 +1537,11 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, league.active = False - league.update_standings(series_results) - if last or autoplay <= 0: #if this series was the last of the season OR number of series to autoplay has been reached - #needs some kind of notification that it's over here + + if last or autoplay == 0: #if this series was the last of the season OR number of series to autoplay has been reached + await channel.send(embed=league.standings_embed()) + await channel.send(f"The {league.name} is no longer autoplaying.") active_leagues.pop(active_leagues.index(league)) return @@ -1536,6 +1558,8 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, next_start = (now + delta).replace(microsecond=0) wait_seconds = (next_start - now).seconds + leagues.save_league(league) + await channel.send(embed=league.standings_embed()) await channel.send(f"""This {league.name} series is now complete! The next series will be starting in {int(wait_seconds/60)} minutes.""") await asyncio.sleep(wait_seconds) From 22115ee2c3d4247542c2b7f61341f2264ed1d6a6 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 20:55:12 -0500 Subject: [PATCH 26/78] closed #142 --- the_prestige.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/the_prestige.py b/the_prestige.py index a805b93..086c0e0 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1394,7 +1394,6 @@ def game_over_embed(game): title_string += f" with {game.inning - (game.max_innings+1)} extra innings.\n" else: title_string += ".\n" - title_string += game.weather.emoji + game.weather.name winning_team = game.teams['home'].name if game.teams['home'].score > game.teams['away'].score else game.teams['away'].name winstring = f"{game.teams['away'].score} to {game.teams['home'].score}\n" @@ -1406,7 +1405,10 @@ def game_over_embed(game): winstring += f"{winning_team} wins!" embed = discord.Embed(color=discord.Color.dark_purple(), title=title_string) - embed.add_field(name="Final score:", value=winstring) + embed.add_field(name="Final score:", value=winstring, inline=False) + embed.add_field(name=f"{game.teams['away'].name} pitcher:", value=game.teams['away'].pitcher.name) + embed.add_field(name=f"{game.teams['home'].name} pitcher:", value=game.teams['home'].pitcher.name) + embed.set_footer(text=game.weather.emoji + game.weather.name) return embed def get_team_fuzzy_search(team_name): From ae256de645b4f456625d67bd0d78a8b5b17bf442 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 22:34:46 -0500 Subject: [PATCH 27/78] implemented thinned veil and twilight weathers --- games.py | 25 +++++++++++++++++++++---- main_controller.py | 9 +++++++++ the_prestige.py | 2 ++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/games.py b/games.py index d917bca..83104a2 100644 --- a/games.py +++ b/games.py @@ -31,13 +31,14 @@ def config(): def all_weathers(): weathers_dic = { #"Supernova" : weather("Supernova", "🌟"), - "Midnight": weather("Midnight", "🕶"), + #"Midnight": weather("Midnight", "🕶"), "Slight Tailwind": weather("Slight Tailwind", "🏌️‍♀️"), - "Heavy Snow": weather("Heavy Snow", "❄") + "Heavy Snow": weather("Heavy Snow", "❄"), + "Twilight" : weather("Twilight", "🌃"), + "Thinned Veil" : weather("Thinned Veil", "🌌") } return weathers_dic - class appearance_outcomes(Enum): strikeoutlooking = "strikes out looking." strikeoutswinging = "strikes out swinging." @@ -269,6 +270,13 @@ class game(object): pb_system_stat = (random.gauss(1*math.erf((bat_stat - pitch_stat)*1.5)-1.8,2.2)) hitnum = random.gauss(2*math.erf(bat_stat/4)-1,3) + if weather.name == "Twilight": + error_line = - (math.log(defender.stlats["defense_stars"] + 1)/50) + 1 + error_roll = random.random() + if error_roll > error_line: + outcome["error"] == True + outcome["defender"] = defender + pb_system_stat = 0.1 if pb_system_stat <= 0: @@ -313,7 +321,7 @@ class game(object): outcome["ishit"] = True if hitnum < 1: outcome["text"] = appearance_outcomes.single - elif hitnum < 2.85: + elif hitnum < 2.85 or "error" in outcome.keys(): outcome["text"] = appearance_outcomes.double elif hitnum < 3.1: outcome["text"] = appearance_outcomes.triple @@ -384,6 +392,11 @@ class game(object): if base is not None: runs += 1 self.bases = {1 : None, 2 : None, 3 : None} + if "veil" in outcome.keys(): + if runs < 4: + self.bases[runs] = self.get_batter() + else: + runs += 1 return runs elif "advance" in outcome.keys(): @@ -535,6 +548,10 @@ class game(object): elif result["text"] == appearance_outcomes.homerun or result["text"] == appearance_outcomes.grandslam: self.get_batter().game_stats["total_bases"] += 4 self.get_batter().game_stats["home_runs"] += 1 + if self.weather.name == "Thinned Veil": + result["veil"] = True + + scores_to_add += self.baserunner_check(defender, result) diff --git a/main_controller.py b/main_controller.py index 73da0a7..215572e 100644 --- a/main_controller.py +++ b/main_controller.py @@ -110,6 +110,8 @@ def update_loop(): if this_game.last_update[0]["defender"] != "": punc = ". " + + if "fc_out" in this_game.last_update[0].keys(): name, base_string = this_game.last_update[0]['fc_out'] updatestring = f"{this_game.last_update[0]['batter']} {this_game.last_update[0]['text'].value.format(name, base_string)} {this_game.last_update[0]['defender']}{punc}" @@ -120,6 +122,13 @@ def update_loop(): state["update_emoji"] = "🏏" state["update_text"] = updatestring + + if "veil" in this_game.last_update[0].keys(): + state["update_emoji"] = "🌌" + state["update_text"] += " {this_game.last_update[0]['batter']}'s will manifests on {games.base_string(this_game.last_update[1])} base!" + elif "error" in this_game.last_update[0].keys(): + state["update_emoji"] = "🌃" + state["update_text"] = f"{this_game.last_update[0]['defender']} lost sight of the ball! {this_game.last_update[0]['batter']} reaches {games.base_string(this_game.last_update[1])} on the error." state["bases"] = this_game.named_bases() diff --git a/the_prestige.py b/the_prestige.py index 086c0e0..9c98076 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1134,6 +1134,7 @@ async def tourney_round_watcher(channel, tourney, games_list, filter_url, finals wins_in_series[winner_name] = 1 final_embed = game_over_embed(game) + final_embed.add_field(name="Series score:", value=f"{wins_in_series[game.teams['away'].name]} - {wins_in_series[game.teams['home'].name]}") await channel.send(f"A {tourney.name} game just ended!") await channel.send(embed=final_embed) if wins_in_series[winner_name] >= int((tourney.series_length+1)/2) and not finals: @@ -1502,6 +1503,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, league.update_standings({winner_name : winner_dic, loser_name : loser_dic}) leagues.save_league(league) final_embed = game_over_embed(game) + final_embed.add_field(name="Series score:", value=f"{series_results[game.teams['away'].name]['wins']} - {series_results[game.teams['home'].name]['wins']}") await channel.send(f"A {league.name} game just ended!") await channel.send(embed=final_embed) if series_results[winner_name]["wins"] + series_results[winner_name]["losses"] < league.series_length: From 3def1378a9711b3f9a4ac087f3d517baf7016c96 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 13 Jan 2021 23:21:28 -0500 Subject: [PATCH 28/78] bugfixes for veil and twilight, changed veil text and emoji --- games.py | 6 +++--- main_controller.py | 8 ++++---- the_prestige.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/games.py b/games.py index 83104a2..5a314c3 100644 --- a/games.py +++ b/games.py @@ -34,7 +34,7 @@ def all_weathers(): #"Midnight": weather("Midnight", "🕶"), "Slight Tailwind": weather("Slight Tailwind", "🏌️‍♀️"), "Heavy Snow": weather("Heavy Snow", "❄"), - "Twilight" : weather("Twilight", "🌃"), + "Twilight" : weather("Twilight", "👻"), "Thinned Veil" : weather("Thinned Veil", "🌌") } return weathers_dic @@ -270,11 +270,11 @@ class game(object): pb_system_stat = (random.gauss(1*math.erf((bat_stat - pitch_stat)*1.5)-1.8,2.2)) hitnum = random.gauss(2*math.erf(bat_stat/4)-1,3) - if weather.name == "Twilight": + if self.weather.name == "Twilight": error_line = - (math.log(defender.stlats["defense_stars"] + 1)/50) + 1 error_roll = random.random() if error_roll > error_line: - outcome["error"] == True + outcome["error"] = True outcome["defender"] = defender pb_system_stat = 0.1 diff --git a/main_controller.py b/main_controller.py index 215572e..c66af65 100644 --- a/main_controller.py +++ b/main_controller.py @@ -125,10 +125,10 @@ def update_loop(): if "veil" in this_game.last_update[0].keys(): state["update_emoji"] = "🌌" - state["update_text"] += " {this_game.last_update[0]['batter']}'s will manifests on {games.base_string(this_game.last_update[1])} base!" + state["update_text"] += f" {this_game.last_update[0]['batter']}'s will manifests on {games.base_string(this_game.last_update[1])} base." elif "error" in this_game.last_update[0].keys(): - state["update_emoji"] = "🌃" - state["update_text"] = f"{this_game.last_update[0]['defender']} lost sight of the ball! {this_game.last_update[0]['batter']} reaches {games.base_string(this_game.last_update[1])} on the error." + state["update_emoji"] = "👻" + state["update_text"] = f"{this_game.last_update[0]['batter']}'s hit goes ethereal, and {this_game.last_update[0]['defender']} can't catch it! {this_game.last_update[0]['batter']} reaches base safely." state["bases"] = this_game.named_bases() @@ -150,4 +150,4 @@ def update_loop(): state["update_pause"] -= 1 socketio.emit("states_update", game_states) - time.sleep(1) \ No newline at end of file + time.sleep(4) \ No newline at end of file diff --git a/the_prestige.py b/the_prestige.py index 9c98076..aad0568 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -202,7 +202,7 @@ class StartRandomGameCommand(Command): channel = msg.channel await msg.delete() - await channel.send("Rolling the bones...") + await channel.send("Rolling the bones... This might take a while.") teamslist = games.get_all_teams() game = games.game(random.choice(teamslist).finalize(), random.choice(teamslist).finalize()) From 5826574a1d1f23d364d7a4cb4ba530b0ae4e5028 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Thu, 14 Jan 2021 00:20:43 -0500 Subject: [PATCH 29/78] startleague command attempt --- league_storage.py | 5 +++-- leagues.py | 4 ++++ main_controller.py | 2 +- the_prestige.py | 44 ++++++++++++++++++++++++++++++++++++++------ 4 files changed, 46 insertions(+), 9 deletions(-) diff --git a/league_storage.py b/league_storage.py index 63a7fe7..dcc4555 100644 --- a/league_storage.py +++ b/league_storage.py @@ -98,7 +98,8 @@ def save_league(league): "series_length" : league.series_length, "games_per_hour" : league.games_per_hour, "owner" : league.owner, - "historic" : league.historic + "historic" : league.historic, + "season" : league.season } with open(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"), "w") as state_file: json.dump(state_dic, state_file, indent=4) @@ -154,5 +155,5 @@ def league_exists(league_name): with os.scandir(os.path.join(data_dir, league_dir)) as folder: for subfolder in folder: if league_name in subfolder.name: - return not state(league_name)["historic"] + return True return False \ No newline at end of file diff --git a/leagues.py b/leagues.py index b685d8a..791a1ec 100644 --- a/leagues.py +++ b/leagues.py @@ -12,6 +12,7 @@ class league_structure(object): self.name = name self.historic = False self.owner = None + self.season = 1 def setup(self, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): self.league = league_dic #key: subleague, value: {division : team_name} @@ -332,4 +333,7 @@ def load_league_file(league_name): this_league.game_length = state_dic["game_length"] this_league.series_length = state_dic["series_length"] this_league.owner = state_dic["owner"] + this_league.games_per_hour = state_dic["games_per_hour"] + this_league.historic = state_dic["historic"] + this_league.season = state_dic["season"] return this_league \ No newline at end of file diff --git a/main_controller.py b/main_controller.py index c66af65..d2338be 100644 --- a/main_controller.py +++ b/main_controller.py @@ -150,4 +150,4 @@ def update_loop(): state["update_pause"] -= 1 socketio.emit("states_update", game_states) - time.sleep(4) \ No newline at end of file + time.sleep(1) \ No newline at end of file diff --git a/the_prestige.py b/the_prestige.py index aad0568..ef99604 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -726,7 +726,7 @@ class StartDraftCommand(Command): return draft_message class DebugLeagueStart(Command): - name = "startleague" + name = "startdebugleague" async def execute(self, msg, command): if not league_exists("test2"): @@ -743,19 +743,50 @@ class DebugLeagueStart(Command): }, division_games=6, inter_division_games=3, inter_league_games=3, games_per_hour = 12) league.generate_schedule() leagues.save_league(league) - else: - league = leagues.load_league_file("test2") - await start_league_day(msg.channel, league, autoplay = 2) class DebugLeagueDisplay(Command): - name = "displayleague" + name = "displaydebugleague" async def execute(self, msg, command): if league_exists("test2"): league = leagues.load_league_file("test2") await msg.channel.send(embed=league.standings_embed()) +class StartLeagueCommand(Command): + name = "startleague" + template = "m;startleague [league name]" + description = """Optional flag: `--queue X` or `-q X` to play X number of series before stopping. +Plays a league with a given name, provided that league has been saved on the website.""" + async def execute(self, msg, command): + league_name = command.split("-").strip() + autoplay = None + + try: + if "--queue " in command: + autoplay = int(command.split("--queue ")[1]) + elif "-q " in command: + autoplay = int(command.split("--queue ")[1]) + if autoplay is not None and autoplay <= 0: + raise ValueError + elif autoplay is None: + autoplay = -1 + except: + await msg.channel.send("Sorry boss, the queue flag needs a natural number. Any whole number over 0 will do just fine.") + return + + if league_exists(league_name): + league = leagues.load_league_file(league_name) + if league.historic: + await msg.channel.send("That league is done and dusted, chief. Sorry.") + return + for active_league in active_leagues: + if active_league.name == league.name: + await msg.channel.send("That league is already running, boss. Patience is a virtue, you know.") + return + await start_league_day(msg.channel, league, autoplay = autoplay) + else: + await msg.channel.send("Couldn't find that league, boss. Did you save it on the website?") commands = [ IntroduceCommand(), @@ -1464,7 +1495,8 @@ async def start_league_day(channel, league, autoplay = 1): async def league_day_watcher(channel, league, games_list, filter_url, autoplay, last = False): league.active = True autoplay -= 1 - active_leagues.append(league) + if league not in active_leagues: + active_leagues.append(league) series_results = {} while league.active: From da8607e2950bd2284d00b03a56c2ae1a19236b5a Mon Sep 17 00:00:00 2001 From: Sakimori Date: Thu, 14 Jan 2021 00:25:24 -0500 Subject: [PATCH 30/78] fixed some blocking bugs in startleague --- league_storage.py | 18 ++---------------- leagues.py | 4 +--- the_prestige.py | 5 +++-- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/league_storage.py b/league_storage.py index dcc4555..c0ad6a6 100644 --- a/league_storage.py +++ b/league_storage.py @@ -72,34 +72,20 @@ def init_league_db(league): for pitcher in team.rotation: c.execute(player_string, (pitcher.name, team.name)) - state_dic = { - "day" : league.day, - "schedule" : league.schedule, - "game_length" : league.game_length, - "series_length" : league.series_length, - "games_per_hour" : league.games_per_hour, - "owner" : None, - "historic" : False - } - if not os.path.exists(os.path.dirname(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"))): - os.makedirs(os.path.dirname(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"))) - with open(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"), "w") as state_file: - json.dump(state_dic, state_file, indent=4) - conn.commit() conn.close() def save_league(league): if league_exists(league.name): state_dic = { + "season" : league.season, "day" : league.day, "schedule" : league.schedule, "game_length" : league.game_length, "series_length" : league.series_length, "games_per_hour" : league.games_per_hour, "owner" : league.owner, - "historic" : league.historic, - "season" : league.season + "historic" : league.historic } with open(os.path.join(data_dir, league_dir, league.name, f"{league.name}.state"), "w") as state_file: json.dump(state_dic, state_file, indent=4) diff --git a/leagues.py b/leagues.py index 791a1ec..fc92657 100644 --- a/leagues.py +++ b/leagues.py @@ -315,9 +315,7 @@ def save_league(this_league): with open(os.path.join(data_dir, league_dir, this_league.name, f"{this_league.name}.league"), "w") as league_file: league_json_string = jsonpickle.encode(this_league.league, keys=True) json.dump(league_json_string, league_file, indent=4) - return True - else: - league_db.save_league(this_league) + league_db.save_league(this_league) def load_league_file(league_name): if league_db.league_exists(league_name): diff --git a/the_prestige.py b/the_prestige.py index ef99604..1c7e2c8 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -759,14 +759,14 @@ class StartLeagueCommand(Command): Plays a league with a given name, provided that league has been saved on the website.""" async def execute(self, msg, command): - league_name = command.split("-").strip() + league_name = command.split("-")[0].strip() autoplay = None try: if "--queue " in command: autoplay = int(command.split("--queue ")[1]) elif "-q " in command: - autoplay = int(command.split("--queue ")[1]) + autoplay = int(command.split("-q ")[1]) if autoplay is not None and autoplay <= 0: raise ValueError elif autoplay is None: @@ -808,6 +808,7 @@ commands = [ SearchTeamsCommand(), StartGameCommand(), StartTournamentCommand(), + StartLeagueCommand(), StartRandomGameCommand(), CreditCommand(), RomanCommand(), From b83bf771cae0516250476d4a90b9df142894afa8 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Thu, 14 Jan 2021 00:37:58 -0500 Subject: [PATCH 31/78] made leagues save properly after autoplaying --- the_prestige.py | 1 + 1 file changed, 1 insertion(+) diff --git a/the_prestige.py b/the_prestige.py index 1c7e2c8..fd5ded9 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1579,6 +1579,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, if last or autoplay == 0: #if this series was the last of the season OR number of series to autoplay has been reached await channel.send(embed=league.standings_embed()) await channel.send(f"The {league.name} is no longer autoplaying.") + leagues.save_league(league) active_leagues.pop(active_leagues.index(league)) return From c837a826c0775d72ba3ce24b17318ff601361134 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Thu, 14 Jan 2021 01:30:31 -0500 Subject: [PATCH 32/78] connect league create page to backend --- league_storage.py | 1 + leagues.py | 2 +- main_controller.py | 38 +++++++++++++++++++-- simmadome/src/CreateLeague.css | 11 +++++- simmadome/src/CreateLeague.tsx | 62 ++++++++++++++++++++++++---------- 5 files changed, 92 insertions(+), 22 deletions(-) diff --git a/league_storage.py b/league_storage.py index 63a7fe7..5029740 100644 --- a/league_storage.py +++ b/league_storage.py @@ -64,6 +64,7 @@ def init_league_db(league): c.execute(teams_table_check_string) for team in league.teams_in_league(): + print(team) c.execute("INSERT INTO teams (name) VALUES (?)", (team.name,)) player_string = "INSERT INTO stats (name, team_name) VALUES (?,?)" diff --git a/leagues.py b/leagues.py index b685d8a..2d92e7a 100644 --- a/leagues.py +++ b/leagues.py @@ -14,7 +14,7 @@ class league_structure(object): self.owner = None def setup(self, league_dic, division_games = 1, inter_division_games = 1, inter_league_games = 1, games_per_hour = 2): - self.league = league_dic #key: subleague, value: {division : team_name} + self.league = league_dic # { subleague name : { division name : [team object] } } self.constraints = { "division_games" : division_games, "inter_div_games" : inter_division_games, diff --git a/main_controller.py b/main_controller.py index 0b968e7..8627250 100644 --- a/main_controller.py +++ b/main_controller.py @@ -1,4 +1,6 @@ -import asyncio, time, datetime, games, json, threading, jinja2, leagues, os +import asyncio, time, datetime, games, json, threading, jinja2, leagues, os, leagues +from leagues import league_structure +from league_storage import league_exists from flask import Flask, url_for, Response, render_template, request, jsonify, send_from_directory, abort from flask_socketio import SocketIO, emit import database as db @@ -20,7 +22,7 @@ def serve(path): ### API @app.route('/api/teams/search') -def searchteams(): +def search_teams(): query = request.args.get('query') page_len = int(request.args.get('page_len')) page_num = int(request.args.get('page_num')) @@ -29,7 +31,7 @@ def searchteams(): abort(400, "A query term is required") result = db.search_teams(query) - if page_len is not None: #pagination should probably be doen in the sqlite query but this will do for now + if page_len is not None: #pagination should probably be done in the sqlite query but this will do for now if page_num is None: abort(400, "A page_len argument must be accompanied by a page_num argument") result = result[page_num*page_len : (page_num + 1)*page_len] @@ -37,6 +39,36 @@ def searchteams(): return jsonify([json.loads(x[0])['name'] for x in result]) #currently all we need is the name but that can change +@app.route('/api/leagues', methods=['POST']) +def create_league(): + config = json.loads(request.data) + + if (league_exists(config['name'])): + abort(400, "A league by that name already exists") + + print(config) + league_dic = { + subleague['name'] : { + division['name'] : [games.get_team(team_name) for team_name in division['teams']] + for division in subleague['divisions'] + } + for subleague in config['structure']['subleagues'] + } + + new_league = league_structure(config['name']) + new_league.setup( + league_dic, + division_games=config['division_series'], + inter_division_games=config['inter_division_series'], + inter_league_games=config['inter_league_series'], + ) + new_league.generate_schedule() + leagues.save_league(new_league) + + return "League created successfully" + + + ### SOCKETS thread2 = threading.Thread(target=socketio.run,args=(app,'0.0.0.0')) diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css index 58c3e36..90c680b 100644 --- a/simmadome/src/CreateLeague.css +++ b/simmadome/src/CreateLeague.css @@ -49,7 +49,7 @@ input[type=number]::-webkit-outer-spin-button { margin-top: 1rem; } -.cl_league_options, .cl_league_structure { +.cl_league_options, .cl_league_structure, .cl_confirm_box { display: flex; background: var(--background-tertiary); flex-direction: column; @@ -58,6 +58,15 @@ input[type=number]::-webkit-outer-spin-button { padding-top: 1.5rem; } +.cl_confirm_box { + min-width: 55rem; + padding: 2.5rem; + display: flex; + align-items: center; + justify-content: center; + font-size: 20pt; +} + .cl_league_options { align-items: center; } diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index b64ce1e..3a4dbe4 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -210,6 +210,8 @@ let initLeagueStructure = { function CreateLeague() { let [name, setName] = useState(""); let [showError, setShowError] = useState(false); + let [nameExists, setNameExists] = useState(false); + let [createSuccess, setCreateSuccess] = useState(false); let [structure, structureDispatch] = useReducer(leagueStructureReducer, initLeagueStructure); let [options, optionsDispatch] = useReducer(LeagueOptionsReducer, new LeagueOptionsState()); @@ -221,18 +223,52 @@ function CreateLeague() { } }) + if (createSuccess) { + return( +
+
+ League created succesfully! +
+
+ ); + } + return (
- setName(e.target.value)}/> -
{name === "" && showError ? "A name is required." : ""}
+ { + setName(e.target.value); + setNameExists(false); + }}/> +
{ + name === "" && showError ? "A name is required." : + nameExists && showError ? "A league by that name already exists" : + "" + }
{ @@ -246,19 +282,14 @@ function CreateLeague() { } function makeRequest(name:string, structure: LeagueStructureState, options:LeagueOptionsState) { - - if (!validRequest(name, structure, options)) { - return null - } - - return ({ + return JSON.stringify({ + name: name, structure: { - name: name, subleagues: structure.subleagues.map(subleague => ({ name: subleague.name, divisions: subleague.divisions.map(division => ({ name: division.name, - teams: division.teams + teams: division.teams.map(team => team.name) })) })) }, @@ -272,7 +303,6 @@ function makeRequest(name:string, structure: LeagueStructureState, options:Leagu } function validRequest(name:string, structure: LeagueStructureState, options:LeagueOptionsState) { - return ( name !== "" && validNumber(options.games_series) && @@ -280,7 +310,7 @@ function validRequest(name:string, structure: LeagueStructureState, options:Leag validNumber(options.inter_division_series) && validNumber(options.inter_league_series) && validNumber(options.top_postseason) && - validNumber(options.wildcards) && + validNumber(options.wildcards, 0) && structure.subleagues.length % 2 === 0 && structure.subleagues.every(subleague => subleague.name !== "" && @@ -292,8 +322,8 @@ function validRequest(name:string, structure: LeagueStructureState, options:Leag ) } -function validNumber(value: string) { - return Number(value) !== NaN && Number(value) > 0 +function validNumber(value: string, min = 1) { + return Number(value) !== NaN && Number(value) >= min } // LEAGUE STRUCUTRE @@ -426,8 +456,6 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm // LEAGUE OPTIONS -type StateBundle = [T, React.Dispatch>] - function LeagueOptions(props: {state: LeagueOptionsState, dispatch: React.Dispatch, showError: boolean}) { return (
From 4acaca0fb19db6797b1f32929a1186c94184f0dc Mon Sep 17 00:00:00 2001 From: Sakimori Date: Thu, 14 Jan 2021 02:37:23 -0500 Subject: [PATCH 33/78] added the startleague command --- the_prestige.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/the_prestige.py b/the_prestige.py index fd5ded9..c34fc97 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1555,7 +1555,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, validminutes = [int((60 * div)/league.games_per_hour) for div in range(0,league.games_per_hour)] for i in range(0, len(validminutes)): if now.minute > validminutes[i]: - if i <= len(validminutes)-1: + if i <= len(validminutes)-2: delta = datetime.timedelta(minutes= (validminutes[i+1] - now.minute)) else: delta = datetime.timedelta(minutes= (60 - now.minute)) @@ -1588,7 +1588,7 @@ async def league_day_watcher(channel, league, games_list, filter_url, autoplay, validminutes = [int((60 * div)/league.games_per_hour) for div in range(0,league.games_per_hour)] for i in range(0, len(validminutes)): if now.minute > validminutes[i]: - if i < len(validminutes)-1: + if i < len(validminutes)-2: delta = datetime.timedelta(minutes= (validminutes[i+1] - now.minute)) else: delta = datetime.timedelta(minutes= (60 - now.minute)) From 96f272127cb9688f47af9a8c0c903df8b9d254e3 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Thu, 14 Jan 2021 17:21:31 -0500 Subject: [PATCH 34/78] add create league link, use logos in link_div --- simmadome/src/img/github.png | Bin 0 -> 2330 bytes simmadome/src/img/patreon.png | Bin 0 -> 52210 bytes simmadome/src/img/twitter.png | Bin 0 -> 8862 bytes simmadome/src/index.css | 38 +++++++++++++++++++++++++++++----- simmadome/src/index.tsx | 22 ++++++++++++++++---- 5 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 simmadome/src/img/github.png create mode 100644 simmadome/src/img/patreon.png create mode 100755 simmadome/src/img/twitter.png diff --git a/simmadome/src/img/github.png b/simmadome/src/img/github.png new file mode 100644 index 0000000000000000000000000000000000000000..73db1f61f3aa55fcaecbca896dbea067706bb7bd GIT binary patch literal 2330 zcmaJ@dpy&7A0KVQT+TU3iOLKmvh6n;HrL%O6)ohFIM()K!!EXAIjO}-B}W%^)GMS^ zbRj&Vi`ep%r%r`PE0rauRMJE)p`NWn=lP@Od|$8M_wsqY-=EL>bNS=9n;FC~MOYyq z5Qu5ON?Ne?^wWKYaP5AUm;6k7ER@nCq#?pMX&OrmLdYE9CJ-6GXT^iTAd9m(`4;E} zfy}Yzg+@pt0@sk(LOz-_L`>RbTB#+~b3MT|& z14UGj%UhW)21C+=LfPqwY$6Bc>x1-?k+cr@pp=D_@sk7+lFS?R)h|hV*O@UW6`Ai_H`049j)JozV)4d8r`BUo7M!zgCCD`;G!S0dV&q zp8LL%~Ba#6Eg$iKtZe$N47EeRXa5>+}e1_})f4LZ~7>us9|I_MOlXiY|*KdQX zeS8~zP@tW6v39VXfr*USwp~rS`=B$j`)nk?@}kq(ClF4d>YOz8hkr;=W~kkm zCW7a<(pcz5X#A0R<9Z{E*BfJ?`u2(tHC?l!+(h-PRUM^q=-1CbjbNI^81U7VyU;3( zT2f^?#ma%q8;EN&iz|Pk@=)pdaMq3d25mbDNrIP#bi|hqP`3*fT}kuvR+%ng#;F!o z!3#SBB2F;iNzfJ(L`*fNFT`NdGQiAH|Ej|Hc2f5bF>p2ufwkUZTFe}(dJ$`MX;C(0 z-V{r-E2m(c5BI}drL(~k6SEswne#fEUdvi&3FiZh%N)80&$C_2kh}Zs$!WSMT5)2L z->t!4_PuW(@0iMUf!tM3EXsxR=8aqQJS!tI77vxXD$Q$NZ1vCFp)TCJPPKgJ6$dq6 z6AvwIT>T_kTfhs9Ro&hblgcP`#)4Y!f6RfcKKz5}fFeLswhx__Ru z`f>qsFw=AMC$D2)!n`KC&FVyxLH=oq<|UuIL`hLk2jvOa!Qq_R3CqNXSp|NlZhBlh z@V0BxvHNAmtK__)^rv^SNw9j3M7}#zg*ToWtbKT~2{x#g2)k9TC|R>Dzhq!T-pA~R z>ZL3u2sdInHHePlU?n!;#-16SNWGJd=j+gQ4vI}N_YbJpa3kc$Q-$nCw8DusXXMl4 z*nJS|qzj=rNJpZI; z$vRbg>YS|lmxjj--{P0zyGBQ?yoS4%MX$EkOMqE$O+Pm%_1o-3WM-q=b4f2dQfTt> zOFR@zTq!4JBAQzKEZEFs#YOE+WUR@=e`!;~PCh-+ddeAuP%>I*Cd8Cb%!1YNZFKDIJTra-- zG#+}%TS;ZSZaqDK8^0CL=AU{B|LU>Hu0mU~}a9D5U= zlszxG=SokFC;8liaQHBlh z2BUO}iYG`REj!%$Xj-syeaVfwq3hF5*L>e!Jm^2?Jo?@}>G*`TrXZHmap&CnfJ4u^ zk68!bvsByruv+!zzl{#!R8}8y9^Ra-sENMbl68A9w_o}?z5eO*E&If08t#Rq+K#s{ zb}mq^_${jVjmeHhTXNWUoFMIe)lJ26`vXz zWvk~HR@whs?OF8cKV8YyEs1et|A`i*;GS`_+RH=ns17TKJg|lJv;Y(H<+2}hIXsat z5ANw;3-!HT?J@e?t>VkCV$sSaXTfoVh-!;h=kN@TPi^X~Dlo@yIP4fl2 z#pt2|1Jj>Ov$71^ei~h1H$uM|R6wY=ZG3Q99U>X|mV`BoS9`4vYw~J@(FazM_8hI9o-&aIo@yE| z6xi92RAt7!kM;6HVQV)mjXu!6Snn}L!YlYRm7CF)XL~-WsBd9Uk6GUDFm8S4@oR}s z!f_@&&0G2FHTy?nQd8F&@&}*SrC)xRgU!h6eepUXk}}=;?q@wX1aZ#AJc}avS@*XR MKo6o-Qerdz3wwRZj{pDw literal 0 HcmV?d00001 diff --git a/simmadome/src/img/patreon.png b/simmadome/src/img/patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..9a521e3fd64d841c1499336e26b8004ad21826ca GIT binary patch literal 52210 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 Bh%x{G literal 0 HcmV?d00001 diff --git a/simmadome/src/img/twitter.png b/simmadome/src/img/twitter.png new file mode 100755 index 0000000000000000000000000000000000000000..af44ca5d502e7841fada40eeeefc200d151dc246 GIT binary patch literal 8862 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 NLq%J;LeV_*e*h(XLh%3q literal 0 HcmV?d00001 diff --git a/simmadome/src/index.css b/simmadome/src/index.css index 663440d..9cf2b34 100644 --- a/simmadome/src/index.css +++ b/simmadome/src/index.css @@ -58,23 +58,51 @@ h2 { #link_div { text-align: right; position: absolute; - top: 0px; - right: 30px; + top: 1rem; + right: 2rem; + display: flex; } -#link_div > a { +.github_logo, .twitter_logo, .patreon_container { + height: 2rem; + width: 2rem; + margin-left: 0.75rem; +} + +.patreon_container { + border-radius: 1rem; + background: #FF424D; +} + +.patreon_logo { + box-sizing: border-box; + padding: 0.35rem; + height: 2rem; + width: 2rem; + position: relative; + left: 0.1rem; + bottom: 0.05rem; +} + +a { background-color: transparent; text-decoration: underline; } -#link_div > a:link, #link_div > a:visited { +a:link, a:visited { color: lightblue; } -#link_div > a:hover { +a:hover { color: white; } +#utility_links { + position: absolute; + top: 1rem; + left: 2rem; +} + img.emoji { height: 1em; width: 1em; diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index 4f7e32a..e6a49c9 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -1,12 +1,15 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; +import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; import './index.css'; import GamesPage from './GamesPage'; import GamePage from './GamePage'; import CreateLeague from './CreateLeague'; import discordlogo from "./img/discord.png"; import reportWebVitals from './reportWebVitals'; +import patreonLogo from './img/patreon.png'; +import githubLogo from './img/github.png'; +import twitterLogo from './img/twitter.png'; ReactDOM.render( @@ -27,9 +30,20 @@ function Header() { return (
@@ -479,12 +479,16 @@ function LeagueOptions(props: {state: LeagueOptionsState, dispatch: React.Dispat ); } -function NumberInput(props: {title: string, value: string, setValue: (newVal: string) => void, showError: boolean}) { +function NumberInput(props: {title: string, value: string, setValue: (newVal: string) => void, showError: boolean, minValue?:number}) { + let minValue = 1; + if (props.minValue !== undefined) { + minValue = props.minValue + } return (
{props.title}
- props.setValue(e.target.value)}/> -
{(Number(props.value) === NaN || Number(props.value) < 0) && props.showError ? "Must be a number greater than 0" : ""}
+ props.setValue(e.target.value)}/> +
{(!isNaN(Number(props.value)) || Number(props.value) < minValue) && props.showError ? "Must be a number greater than "+minValue : ""}
); } diff --git a/simmadome/src/GamesPage.tsx b/simmadome/src/GamesPage.tsx index 3a2ad97..4fdaacb 100644 --- a/simmadome/src/GamesPage.tsx +++ b/simmadome/src/GamesPage.tsx @@ -8,6 +8,7 @@ function GamesPage() { let [search, setSearch] = useState(window.location.search); useEffect(() => { setSearch(window.location.search); + //eslint-disable-next-line react-hooks/exhaustive-deps }, [window.location.search]) let searchparams = new URLSearchParams(search); diff --git a/simmadome/src/GamesUtil.tsx b/simmadome/src/GamesUtil.tsx index 8002c02..d590399 100644 --- a/simmadome/src/GamesUtil.tsx +++ b/simmadome/src/GamesUtil.tsx @@ -32,6 +32,7 @@ const useListener = (onUpdate: (update: [string, GameState][]) => void, url: str socket.on('connect', () => socket.emit('recieved', {})); socket.on('states_update', onUpdate); return () => {socket.disconnect()}; + //eslint-disable-next-line react-hooks/exhaustive-deps }, [url]) } diff --git a/simmadome/src/index.tsx b/simmadome/src/index.tsx index e6a49c9..b0ec638 100644 --- a/simmadome/src/index.tsx +++ b/simmadome/src/index.tsx @@ -32,14 +32,14 @@ function Header() { - +
@@ -229,13 +235,20 @@ function CreateLeague() { setCreateSuccess(true); } if (req.status === 400) { - setNameExists(true); + let err = JSON.parse(req.response); + switch (err.status) { + case 'err_league_exists': + setNameExists(true); + break; + case 'err_no_such_team': + setDeletedTeams(err.cause); + break; + } setShowError(true); } } } req.send(data); - } }}>Submit
{ @@ -270,45 +283,61 @@ function makeRequest(name:string, structure: LeagueStructureState, options:Leagu } function validRequest(name:string, structure: LeagueStructureState, options:LeagueOptionsState) { + + return ( name !== "" && + validNumber(options.games_series) && validNumber(options.intra_division_series) && validNumber(options.inter_division_series) && validNumber(options.inter_league_series) && validNumber(options.top_postseason) && validNumber(options.wildcards, 0) && + structure.subleagues.length % 2 === 0 && - structure.subleagues.every(subleague => + + structure.subleagues.every((subleague, si) => subleague.name !== "" && - subleague.divisions.every(division => + !structure.subleagues.slice(0, si).some(val => val.name === subleague.name) && + subleague.divisions.every((division, di) => division.name !== "" && - division.teams.length >= 2 + division.teams.length >= 2 && + division.teams.length <= MAX_TEAMS_PER_DIVISION && + !subleague.divisions.slice(0, di).some(val => val.name === division.name) ) ) ) } function validNumber(value: string, min = 1) { - return !isNaN(Number(value)) && Number(value) >= min + return !isNaN(Number(value)) && Number(value) >= min; } // LEAGUE STRUCUTRE -function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dispatch, showError: boolean}) { +function LeagueStructre(props: {state: LeagueStructureState, dispatch: React.Dispatch, deletedTeams: string[], showError: boolean}) { + let nSubleagues = props.state.subleagues.length; + let nDivisions = props.state.subleagues[0].divisions.length; return (
- +
- + { (nSubleagues+1) * (nDivisions+1) < MAX_SUBLEAGUE_DIVISION_TOTAL ? + : +
+ }
{props.state.subleagues.length % 2 !== 0 && props.showError ? "Must have an even number of subleagues." : ""}
- + { nSubleagues * (nDivisions+2) < MAX_SUBLEAGUE_DIVISION_TOTAL ? + : +
+ }
); } @@ -317,16 +346,25 @@ function SubleagueHeaders(props: {subleagues: SubleagueState[], dispatch: React. return (
- {props.subleagues.map((subleague, i) => ( -
-
- 1} dispatch={action => - props.dispatch(Object.assign({subleague_index: i}, action)) - }/> -
{subleague.name === "" && props.showError ? "A name is required." : ""}
+ {props.subleagues.map((subleague, i) => { + let err = + subleague.name === "" ? + "A name is required." : + props.subleagues.slice(0, i).some(val => val.name === subleague.name) ? + "Each subleague must have a different name." : + ""; + + return ( +
+
+ 1} dispatch={action => + props.dispatch(Object.assign({subleague_index: i}, action)) + }/> +
{props.showError ? err : ""}
+
-
- ))} + ) + })}
); } @@ -342,7 +380,7 @@ function SubleageHeader(props: {state: SubleagueState, canDelete: boolean, dispa ); } -function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch, showError: boolean}) { +function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatch, deletedTeams: string[], showError: boolean}) { return (<> {props.subleagues[0].divisions.map((val, di) => (
@@ -357,7 +395,9 @@ function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatc
props.dispatch(Object.assign({subleague_index: si, division_index: di}, action)) - } showError={props.showError}/> + } + isDuplicate={subleague.divisions.slice(0, di).some(val => val.name === subleague.divisions[di].name)} + deletedTeams={props.deletedTeams} showError={props.showError} />
))} @@ -366,7 +406,14 @@ function Divisions(props: {subleagues: SubleagueState[], dispatch: React.Dispatc ); } -function Division(props: {state: DivisionState, dispatch:(action: DistributiveOmit) => void, showError:boolean}) { +function Division(props: { + state: DivisionState, + dispatch: (action: DistributiveOmit) => void, + isDuplicate: boolean, + deletedTeams: string[], + showError: boolean + }) { + let [newName, setNewName] = useState(""); let [searchResults, setSearchResults] = useState([]); let newNameInput = useRef(null); @@ -378,45 +425,59 @@ function Division(props: {state: DivisionState, dispatch:(action: DistributiveOm } }) + let divisionErr = + props.state.name === "" ? + "A name is required." : + props.isDuplicate ? + "Each division in a subleague must have a different name." : + "" + + let teamsErr = props.state.teams.length < 2 ? "Must have at least 2 teams." : ""; + return (
props.dispatch({type: 'rename_division', name: e.target.value}) }/> -
{props.state.name === "" && props.showError ? "A name is required." : ""}
+
{props.showError ? divisionErr : ""}
- {props.state.teams.map((team, i) => ( + {props.state.teams.map((team, i) => (<>
{team.name}
- ))} -
- { - let params = new URLSearchParams({query: e.target.value, page_len: '5', page_num: '0'}); - fetch("/api/teams/search?" + params.toString()) - .then(response => response.json()) - .then(data => setSearchResults(data)); - setNewName(e.target.value); - }}/> -
- {searchResults.length > 0 && newName.length > 0 ? - (
- {searchResults.map(result => -
{ - props.dispatch({type:'add_team', name: result}); - setNewName(""); - if (newNameInput.current) { - newNameInput.current.focus(); - } - }}>{result}
- )} -
): -
+
{props.showError && props.deletedTeams.includes(team.name) ? "This team was deleted" : ""}
+ ))} + { props.state.teams.length < MAX_TEAMS_PER_DIVISION ? <> +
+ { + let params = new URLSearchParams({query: e.target.value, page_len: '5', page_num: '0'}); + fetch("/api/teams/search?" + params.toString()) + .then(response => response.json()) + .then(data => setSearchResults(data)); + setNewName(e.target.value); + }}/> +
+ {searchResults.length > 0 && newName.length > 0 ? + (
+ {searchResults.map(result => +
{ + props.dispatch({type:'add_team', name: result}); + setNewName(""); + if (newNameInput.current) { + newNameInput.current.focus(); + } + }}>{result}
+ )} +
): + null + } : + null } -
{props.state.teams.length < 2 && props.showError ? "Must have at least 2 teams." : ""}
+ +
{props.showError ? teamsErr : ""}
); } @@ -446,7 +507,7 @@ function LeagueOptions(props: {state: LeagueOptionsState, dispatch: React.Dispat ); } -function NumberInput(props: {title: string, value: string, setValue: (newVal: string) => void, showError: boolean, minValue?:number}) { +function NumberInput(props: {title: string, value: string, setValue: (newVal: string) => void, showError: boolean, minValue? : number}) { let minValue = 1; if (props.minValue !== undefined) { minValue = props.minValue @@ -455,7 +516,7 @@ function NumberInput(props: {title: string, value: string, setValue: (newVal: st
{props.title}
props.setValue(e.target.value)}/> -
{(!isNaN(Number(props.value)) || Number(props.value) < minValue) && props.showError ? "Must be a number greater than "+minValue : ""}
+
{(isNaN(Number(props.value)) || Number(props.value) < minValue) && props.showError ? "Must be a number greater than " + minValue : ""}
); } diff --git a/simmadome/src/util.tsx b/simmadome/src/util.tsx index 41fb20e..b1f840c 100644 --- a/simmadome/src/util.tsx +++ b/simmadome/src/util.tsx @@ -1,6 +1,3 @@ -import {useRef} from 'react'; - - function removeIndex(arr: any[], index: number) { return arr.slice(0, index).concat(arr.slice(index+1)); } From 04f8c1bf2c5335b905caa3fcbc8897074ad4ae06 Mon Sep 17 00:00:00 2001 From: Elijah Steres Date: Sat, 16 Jan 2021 01:29:09 -0500 Subject: [PATCH 72/78] fix deleted team error --- simmadome/.eslintcache | 2 +- simmadome/src/CreateLeague.css | 7 ++++++- simmadome/src/CreateLeague.tsx | 17 ++++++++++------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/simmadome/.eslintcache b/simmadome/.eslintcache index 9f96e6b..32ab91c 100644 --- a/simmadome/.eslintcache +++ b/simmadome/.eslintcache @@ -1 +1 @@ -[{"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\index.tsx":"1","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\reportWebVitals.ts":"2","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamesPage.tsx":"3","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamePage.tsx":"4","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamesUtil.tsx":"5","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\Game.tsx":"6","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\CreateLeague.tsx":"7","M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\util.tsx":"8"},{"size":2425,"mtime":1610685584594,"results":"9","hashOfConfig":"10"},{"size":440,"mtime":1610521673158,"results":"11","hashOfConfig":"10"},{"size":4866,"mtime":1610685584593,"results":"12","hashOfConfig":"10"},{"size":1897,"mtime":1610685584589,"results":"13","hashOfConfig":"10"},{"size":1157,"mtime":1610685584594,"results":"14","hashOfConfig":"10"},{"size":3173,"mtime":1610583643836,"results":"15","hashOfConfig":"10"},{"size":17241,"mtime":1610685584587,"results":"16","hashOfConfig":"10"},{"size":1029,"mtime":1610685584594,"results":"17","hashOfConfig":"10"},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1jg8ts7",{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"22"},{"filePath":"23","messages":"24","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25","messages":"26","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"22"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33","messages":"34","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\index.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\reportWebVitals.ts",[],["35","36"],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamesPage.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamePage.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\GamesUtil.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\Game.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\CreateLeague.tsx",[],"M:\\Documents\\Code\\matteo\\the-prestige\\simmadome\\src\\util.tsx",["37"],{"ruleId":"38","replacedBy":"39"},{"ruleId":"40","replacedBy":"41"},{"ruleId":"42","severity":1,"message":"43","line":1,"column":9,"nodeType":"44","messageId":"45","endLine":1,"endColumn":15},"no-native-reassign",["46"],"no-negated-in-lhs",["47"],"@typescript-eslint/no-unused-vars","'useRef' is defined but never used.","Identifier","unusedVar","no-global-assign","no-unsafe-negation"] \ No newline at end of file +[{"/Users/elijah/Documents/Projects/matteo/simmadome/src/index.tsx":"1","/Users/elijah/Documents/Projects/matteo/simmadome/src/reportWebVitals.ts":"2","/Users/elijah/Documents/Projects/matteo/simmadome/src/GamesPage.tsx":"3","/Users/elijah/Documents/Projects/matteo/simmadome/src/GamePage.tsx":"4","/Users/elijah/Documents/Projects/matteo/simmadome/src/CreateLeague.tsx":"5","/Users/elijah/Documents/Projects/matteo/simmadome/src/GamesUtil.tsx":"6","/Users/elijah/Documents/Projects/matteo/simmadome/src/util.tsx":"7","/Users/elijah/Documents/Projects/matteo/simmadome/src/Game.tsx":"8"},{"size":2368,"mtime":1610663769654,"results":"9","hashOfConfig":"10"},{"size":425,"mtime":1610566206674,"results":"11","hashOfConfig":"10"},{"size":4725,"mtime":1610664926203,"results":"12","hashOfConfig":"10"},{"size":1836,"mtime":1610677519051,"results":"13","hashOfConfig":"10"},{"size":18825,"mtime":1610778204901,"results":"14","hashOfConfig":"10"},{"size":1116,"mtime":1610677473305,"results":"15","hashOfConfig":"10"},{"size":961,"mtime":1610694553519,"results":"16","hashOfConfig":"10"},{"size":3089,"mtime":1610572714752,"results":"17","hashOfConfig":"10"},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1bvn6qu",{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26","messages":"27","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32","messages":"33","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/elijah/Documents/Projects/matteo/simmadome/src/index.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/reportWebVitals.ts",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/GamesPage.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/GamePage.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/CreateLeague.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/GamesUtil.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/util.tsx",[],"/Users/elijah/Documents/Projects/matteo/simmadome/src/Game.tsx",[]] \ No newline at end of file diff --git a/simmadome/src/CreateLeague.css b/simmadome/src/CreateLeague.css index ed5ddfc..9aadf3f 100644 --- a/simmadome/src/CreateLeague.css +++ b/simmadome/src/CreateLeague.css @@ -252,11 +252,16 @@ input[type=number]::-webkit-outer-spin-button { margin-bottom: 0; } -.cl_Structure_err_team { +.cl_structure_err_team { margin-top: -0.5rem; + margin-bottom: 0; width: 85%; } +.cl_team_name_err { + color: var(--accent-red); +} + .cl_structure_err_teams { width: 98%; } diff --git a/simmadome/src/CreateLeague.tsx b/simmadome/src/CreateLeague.tsx index b6278df..7f2d530 100644 --- a/simmadome/src/CreateLeague.tsx +++ b/simmadome/src/CreateLeague.tsx @@ -442,13 +442,16 @@ function Division(props: { }/>
{props.showError ? divisionErr : ""}
- {props.state.teams.map((team, i) => (<> -
-
{team.name}
- -
-
{props.showError && props.deletedTeams.includes(team.name) ? "This team was deleted" : ""}
- ))} + {props.state.teams.map((team, i) => { + let showDeleted = props.showError && props.deletedTeams.includes(team.name) + return (<> +
+
{team.name}
+ +
+
{showDeleted ? "This team was deleted" : ""}
+ ) + })} { props.state.teams.length < MAX_TEAMS_PER_DIVISION ? <>
Date: Sat, 16 Jan 2021 13:36:23 -0500 Subject: [PATCH 73/78] fix #157 --- the_prestige.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/the_prestige.py b/the_prestige.py index 9df36cf..5c63553 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -609,7 +609,7 @@ class StartDraftCommand(Command): draft = Draft.make_draft() mentions = {f'<@!{m.id}>' for m in msg.mentions} content = msg.content.split('\n')[1:] # drop command out of message - if len(content) % 3: + if not content or len(content) % 3: await msg.channel.send('Invalid list') raise ValueError('Invalid length') From 9a1fd5c553ed79cdf57362248e1e08c9d5c2601d Mon Sep 17 00:00:00 2001 From: Genderdruid Date: Sat, 16 Jan 2021 14:27:14 -0800 Subject: [PATCH 74/78] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c4e7963..44744e5 100644 --- a/README.md +++ b/README.md @@ -98,8 +98,9 @@ accepting pull requests, check the issues for to-dos. - m;pauseleague [leaguename] - pauses the specified league after the current series finishes until the league is started again with m;startleague. - general commands (all of these can be used by anyone): - - m;leaguestandings [leaguename] + - m;leaguestandings [leaguename] --season #/-s # - displays the current standings for the specified league. + - by default this will display the standings for the current season but if the --season #/-s # flag is set it will instead display the standings for the #th season instead for viewing historical standings. - m;leaguewildcard [leaguename] - displays the wild card standings for the specified league. if the league doesn't have wild cards, it will instead tell you that. - m;leagueschedule [leaguename] From 012fad8850736607604a5242718cef5b819da1e4 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Sat, 16 Jan 2021 18:39:08 -0500 Subject: [PATCH 75/78] corrected midseries restart check --- the_prestige.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/the_prestige.py b/the_prestige.py index aa3590e..fc0269b 100644 --- a/the_prestige.py +++ b/the_prestige.py @@ -1740,6 +1740,8 @@ async def start_league_day(channel, league, partial = False): if partial: missed_games = (league.day % league.series_length) - 1 + if missed_games == -1: + missed_games = league.series_length - 1 await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, last, missed = missed_games) else: await league_day_watcher(channel, league, current_games, config()['simmadome_url']+ext, last) From 74f3ac5c98be5a84f688802d520c604e36ba30c2 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Sun, 17 Jan 2021 15:01:05 -0500 Subject: [PATCH 76/78] fixed some home/away logic --- leagues.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/leagues.py b/leagues.py index a1d06e2..4a57398 100644 --- a/leagues.py +++ b/leagues.py @@ -149,7 +149,7 @@ class league_structure(object): matchups.append([team_b.name, team_a.name]) else: matchups.append([team_a.name, team_b.name]) - a_home != a_home + a_home = not a_home for i in range(0, self.constraints["inter_div_games"]): #inter-division matchups for subleague in self.league.keys(): @@ -183,7 +183,7 @@ class league_structure(object): matchups.append([team_b.name, team_a.name]) else: matchups.append([team_a.name, team_b.name]) - a_home != a_home + a_home = not a_home for subleague in self.league.keys(): From 5216d7a4d33d96b1ce643864a944d4820788c628 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Sun, 17 Jan 2021 15:08:12 -0500 Subject: [PATCH 77/78] edited gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 1722461..cbb8cfd 100644 --- a/.gitignore +++ b/.gitignore @@ -348,3 +348,5 @@ ids # database matteo.db /matteo_env/Lib/site-packages/flask_socketio/__init__.py +/data/leagues +/simmadome/build From d141c214337b50264e10f29f6dce8278101be6f3 Mon Sep 17 00:00:00 2001 From: Sakimori Date: Sun, 17 Jan 2021 15:48:21 -0500 Subject: [PATCH 78/78] fixed bye string sneaking into league --- league_storage.py | 1 - leagues.py | 33 ++++++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/league_storage.py b/league_storage.py index 1ea012a..183003e 100644 --- a/league_storage.py +++ b/league_storage.py @@ -81,7 +81,6 @@ def init_league_db(league): c.execute(teams_table_check_string) for team in league.teams_in_league(): - print(team) c.execute("INSERT INTO teams (name) VALUES (?)", (team.name,)) player_string = "INSERT INTO stats (name, team_name) VALUES (?,?)" diff --git a/leagues.py b/leagues.py index 4a57398..422c261 100644 --- a/leagues.py +++ b/leagues.py @@ -1,6 +1,7 @@ import time, asyncio, json, jsonpickle, random, math, os import league_storage as league_db from itertools import chain +from copy import deepcopy from games import team, game from discord import Embed, Color @@ -122,8 +123,9 @@ class league_structure(object): matchups = [] batch_subleagues = [] #each sub-array is all teams in each subleague subleague_max = 1 - for subleague in self.league.keys(): - teams = self.teams_in_subleague(subleague) + league = deepcopy(self.league) + for subleague in league.keys(): + teams = deepcopy(self.teams_in_subleague(subleague)) if subleague_max < len(teams): subleague_max = len(teams) batch_subleagues.append(teams) @@ -152,13 +154,13 @@ class league_structure(object): a_home = not a_home for i in range(0, self.constraints["inter_div_games"]): #inter-division matchups - for subleague in self.league.keys(): + for subleague in league.keys(): division_max = 1 divisions = [] - for div in self.league[subleague].keys(): - if division_max < len(self.league[subleague][div]): - divison_max = len(self.league[subleague][div]) - divisions.append(self.league[subleague][div]) + for div in league[subleague].keys(): + if division_max < len(league[subleague][div]): + divison_max = len(league[subleague][div]) + divisions.append(deepcopy(league[subleague][div])) last_div = None if len(divisions) % 2 != 0: @@ -186,8 +188,8 @@ class league_structure(object): a_home = not a_home - for subleague in self.league.keys(): - for division in self.league[subleague].values(): #generate round-robin matchups + for subleague in league.keys(): + for division in league[subleague].values(): #generate round-robin matchups if len(division) % 2 != 0: division.append("OFF") @@ -197,13 +199,14 @@ class league_structure(object): teams_b.reverse() for team_a, team_b in zip(teams_a, teams_b): - for j in range(0, self.constraints["division_games"]): - if i % 2 == 0: - matchups.append([team_b.name, team_a.name]) - else: - matchups.append([team_a.name, team_b.name]) + if team_a != "OFF" and team_b != "OFF": + for j in range(0, self.constraints["division_games"]): + if i % 2 == 0: + matchups.append([team_b.name, team_a.name]) + else: + matchups.append([team_a.name, team_b.name]) - division.insert(1, division.pop()) + division.insert(1, division.pop()) return matchups def generate_schedule(self):